input type으로 T를 받는 IsNever type을 구현하세요. 만약 T의 유형이 never으로 확인되면 true를 반환하고 아니면 false를 반환합니다
type IsNever<T> = [T] extends [never]? true : false;
일단 내가 이해한 바는 이렇다
extends에 제네릭이 오고, 그 제네릭에 union 타입이 오면 분배법칙이 동작한다.
그런데, never를 분배를 할 수 없으니
type IsNever<T> = T extends never?true:false;
never가 된다.
그래서 분배법칙을 일으키지 않게 하기 위한 방법으로 []를 사용한다.
대괄호를 사용하면 분배법칙이 일어나지 않는다고 한다.
그래서 유니온 타입으로써의 never가 아닌 타입으로써의 never가 들어가므로,
내가 제시한 풀이대로 풀어야 하는 것 같다.
https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types