Тип TypeScript exclude null включает undefined

Sep 30 2020

В соответствии с

https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype

Без значения Nullable

Создает тип, исключая значения null и undefined из Type.

пример
type T0 = NonNullable<string | number | undefined>;
//    ^ = type T0 = string | number
type T1 = NonNullable<string[] | null | undefined>;
//    ^ = type T1 = string[]

и я прочитал, что это определяется как:

type NonNullable<T> = T extends null ? never : T

Теперь я хочу исключить, nullно включить undefinedто, что требуется в мой код.

Как бы Вы это сделали? Благодарю.

Ответы

1 Praveenkumar Oct 01 2020 at 04:02

Фактически существующее NonNullableопределяется как type NonNullable<T> = T extends null | undefined ? never : T;. Но вы можете создать свой собственный тип утилит, как показано ниже, и использовать его.

type NonNullButUndefined<T> = T extends null ? never : T;

// Usage
type T = NonNullButUndefined<string | null | undefined>;

Применение: