더북(TheBook)

IsUnion

다음으로는 유니언인지 판단하는 IsUnion 타입을 만들어보겠습니다.

type IsUnion<T, U = T> = IsNever<T> extends true
  ? false
  : T extends T
    ? [U] extends [T]
      ? false
      : true
    : false;

U = T로 타입 매개변수를 하나 더 만들었을까요? T extends T는 무슨 의미일까요? T extends T는 항상 true가 아니냐고 할 수 있는데 사실 그렇습니다. 그런데도 사용하는 이유는 바로 분배법칙을 만들기 위해서입니다. 유니언의 경우 컨디셔널 타입 제네릭과 만나면 분배법칙이 발생합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.