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;
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.