Skip to content

NonNullable

判断变量类型是否为 null | undefined

实现

ts
/**
 * Exclude null and undefined from T
 */
type NonNullable<T> = T extends null | undefined ? never : T

栗子

ts
type Null1 = NonNullable<null> // never
type Null2 = NonNullable<undefined> // never

type Null3 = NonNullable<undefined | string> // string
type Null4 = NonNullable<undefined | string | number> // string | number

联合类型

对于联合类型 返回的是联合类型中的非 null 和 undefined 的子集

ts
type Null3 = NonNullable<undefined | string> // string
type Null4 = NonNullable<undefined | string | number> // string | number

type U1 = undefined | "name"
type Null5 = NonNullable<undefined | U1 | number> //  "name" | number

type Null6 = NonNullable<undefined | PaginationRequest | number>  // "PaginationRequest" | number