typescript - Är det möjligt att utöka en typ som kan vara null?


Jag har en typ jag skulle vilja utöka, men min enda referens till den har den definierad som

type Foo = TypeIamInterestedIn | null

Detta är med strictNullChecks på.

Här är ett tsPlayground-exempel:

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
}

Finns det något sätt att bara välja den icke-null-typen att utöka här?

Svar #1

Du kan använda Exclude för att få null bort därifrån. Exclude är en villkorlig typ som tar bort den andra typparametern från den första typparametern. I det här fallet kan vi ta bort null-typen från unionstypen.

type Test2 = { name: string } | null

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