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

问题描述 投票:2回答:1

我有一个我希望扩展的类型,但是我对它的唯一引用将其定义为

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类型来扩展吗?

typescript typescript2.0
1个回答
5
投票

你可以使用Exclude从那里获得nullExclude是一个条件类型,它将从第一个类型参数中删除第二个类型参数。在这种情况下,我们可以从union类型中删除null类型。

type Test2 = { name: string } | null

interface ExtendedTest2 extends Exclude<Test2, null> { 
    date: number
}
© www.soinside.com 2019 - 2024. All rights reserved.