Typescript never vs [never]

Viewed 32

Why this doesn't work:

type IsNever<T> = T extends never ? true : false;

type A = IsNever<never>; // ->'never', but should be true

but this works:

type IsNever<T> = [T] extends [never] ? true : false;

type A = IsNever<never>; // true

How square brackets [] help with type definition in this case?

1 Answers

Can't extends from type never. Correct type:

type IsNever<T> = [T] extends [never] ? true : false
Related