挑战
Implement a type IsNever, which takes input type T.
If the type of resolves to never, return true, otherwise false.
For example:
type A = IsNever<never>; // expected to be true
type B = IsNever<undefined>; // expected to be false
type C = IsNever<null>; // expected to be false
type D = IsNever<[]>; // expected to be false
type E = IsNever<number>; // expected to be false解答
这道题目的解法非常简单,只需要使用条件类型即可。
type IsNever<T> = [T] extends [never] ? true : false;我们之所以用 [T] extends [never] 而不是 T extends never 是因为 extends 的分布式特性,而我们希望 T 保持原样。