Annotated solution
Published September 1, 2026The solution
type IsNever<T> = [T] extends [never] ? true : false
The common wrong answer
type IsNever<T> = T extends never ? true : false
This returns `never`, not `true`. A conditional type with a naked type parameter distributes over unions, and `never` is the empty union — so there are no members to distribute over, the conditional never runs for any member, and the result is the empty union again.
Line by line
[T] extends [never]The tuple wrapper is not decoration: it makes the left side no longer a naked type parameter, which switches distribution off and lets the comparison happen on `never` itself.
IsNever<never | string>`never | string` is just `string` — `never` vanishes from a union the moment it joins one. The answer is `false` because the type that arrived was never `never` to begin with.
Takeaway
`never` is the empty union, and that single fact explains most of its strange behaviour: distribution over it does nothing, and it disappears from any union it joins.

