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?