typescript - 是否可以扩展可能为 Null 的类型?
问题描述
我有一个我想扩展的类型,但是我对它的唯一引用将它定义为
type Foo = TypeIamInterestedIn | null
这是与strictNullChecks
。
这是一个tsPlayground示例:
type Test1 = { name: string }
type Test2 = { name: string } | null
interface ExtendedTest1 extends Test1 {
date: number
}
interface ExtendedTest2 extends Test2 { // type error an interface may only extend a class or another interface
date: number
}
无论如何只选择非空类型在这里扩展?
解决方案
你可以Exclude
用来null
离开那里。Exclude
是一个条件类型,它将从第一个类型参数中删除第二个类型参数。在这种情况下,我们可以null
从联合类型中删除该类型。
type Test2 = { name: string } | null
interface ExtendedTest2 extends Exclude<Test2, null> {
date: number
}