타입 챌린지 1042 - IsNever

소파의 벨로그·2025년 3월 30일

타입챌린지

목록 보기
39/131

문제 링크

문제

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

0개의 댓글