더북(TheBook)

IsAny

any 타입인지 판단하는 IsAny 타입도 만들어보겠습니다.

type IsAny<T> = string extends (number & T) ? true : false;

생각했던 코드와 전혀 다른 코드인가요? 기본적으로 stringnumber는 겹치지 않아서 extends할 수가 없습니다. 또한, number & Tnumber의 부분집합이므로 더욱 string과 겹치지 않습니다. 하지만 Tany라면 이야기가 달라집니다. number & anyany이고, stringanyextends할 수 있게 됩니다. 따라서 Tany일 때만 true이므로 any인지 아닌지를 판단하는 역할을 할 수 있습니다.

 

IsArray

이번에는 배열인지 판단하는 IsArray 타입입니다.

type IsArray<T> = IsNever<T> extends true
  ? false
  : T extends readonly unknown[]
    ? IsAny<T> extends true
      ? false
      : true
    : false;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.