断言类型 A 可分配给类型 B

时间:2021-02-24 14:40:58

标签: typescript types

假设我有从 3rd 方库导入的类型 T1。假设类型 T1 定义为:

type T1 = {
    a: number | string
    b: 'b1' | 'b2' | 'b3'
    c?: boolean
}

现在我想定义类型 T2 如下:

type T2 = {
    a: number
    b: 'b1' | 'b2'
}

只要需要 T2 类型,就可以使用 T1 类型的对象。

如何在定义 T2 时明确断言这一点,并且如果不是这样,如何让 Typescript 的类型检查器抱怨?

我期待以下内容:

assert_assignable_to<T1, T2>()

我假设我可以使用组合 T2T1OmitPick 构造类型 & 但我想在我的代码中明确断言T2 的实例可以分配给 T1

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以定义 T2 来扩展 T1

interface T2 extends T1 {
    a: number
    b: 'b1' | 'b2'
}

如果 T2 不能分配给 T1,你会得到一个错误

playground