Isnever

挑战

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 保持原样。