Implement a `IsNever` Generic, which allows you to check if a type is never. Learn type distribution in TypeScript in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll implement a IsNever Generic, which allows you to check if a type is never.
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 falseChange the following code to make the test cases pass (no type check errors).
// Video Solution: https://youtube.com/watch?v=FVFjXE5wQLY
type cases = [
Expect<Equal<IsNever<never>, true>>,
Expect<Equal<IsNever<never | string>, false>>,
Expect<Equal<IsNever<''>, false>>,
Expect<Equal<IsNever<undefined>, false>>,
Expect<Equal<IsNever<null>, false>>,
Expect<Equal<IsNever<[]>, false>>,
Expect<Equal<IsNever<{}>, false>>,
]
Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
[object Object]How it works:
T is never. By wrapping T in an array, we prevent the type from being distributed over the union. This way we can check the entire union against never.true, otherwise we return falseThis challenge helps you understand union type manipulation and how to apply this concept in real-world scenarios.
This challenge is originally from here.