假设我有一个从第三方库导入的类型T1
,假设类型T1
定义为:
type T1 = {
a: number | string
b: 'b1' | 'b2' | 'b3'
c?: boolean
}
现在我想定义类型T2
如下:
type T2 = {
a: number
b: 'b1' | 'b2'
}
只要需要类型T1
,就可以使用类型T2
的对象。
在定义T2的地方,我如何显式Assert,如果不是这样的话,如何让Typescript的类型检查器抱怨?
我期待着类似下面的内容:
assert_assignable_to<T1, T2>()
我假设我可以使用Omit
、Pick
和&
的组合从T1
构造类型T2
,但是我想在代码中显式AssertT2
的示例可以被赋值给T1
。
有什么想法吗?
2条答案
按热度按时间a64a0gku1#
您可以定义
T2
来扩展T1
如果
T2
不能分配给T1
,您将得到错误运动场
bgibtngc2#
您可以使用通用类型。Playground
注意,在这个例子中,
Suptype
不能赋值给Supertype
,看起来你混淆了对方差的理解(阅读更多关于方差和子类型的内容)。您可能指的是这个(Playground):