题目:
NonNullable<T>
returns a type by excludingnull
andundefined
from T.Please implement
MyNonNullable<T>
by yourself.
type Foo = 'a' | 'b' | null | undefined
type A = MyNonNullable<Foo> // 'a' | 'b'
解答:
type MyNonNullable<T> = T extends null | undefined ? never : T
// {} 一般表示的是非null,非undefined的任意类型
// T & {}
// T extends {} ? T : never
内容解释:
MyNonNullable<T>: 从T中排除null和undefined
{}:表示非null,非undefined的任意类型。所以上述实现可以用T&{},T extends {} ? T : never实现