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
Was thinking about doing as such:
type IsNever<T> = T extends never ? true: false
But sadly it won't work well, it fails at this case: Expect<Equal<IsNever<never>, true>>,
Solution is always:
type IsNever<T> = [T] extends [never] ? true: false