是否可以扩展可能为Null的Type?

时间:2018-09-14 11:15:00

标签: typescript typescript2.0

我有一个想要扩展的类型,但是我唯一的引用将其定义为

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
}

总有没有要选择非null类型来扩展到这里?

1 个答案:

答案 0 :(得分:5)

您可以使用Exclude离开那里的nullExclude是一种条件类型,将从第一类型参数中删除第二类型参数。在这种情况下,我们可以从联合类型中删除null类型。

type Test2 = { name: string } | null

interface ExtendedTest2 extends Exclude<Test2, null> { 
    date: number
}