kakasoo

IsTuple, 튜플인지 아닌지 검증하는 타입 본문

프로그래밍/TypeScript

IsTuple, 튜플인지 아닌지 검증하는 타입

카카수(kakasoo) 2023. 4. 17. 23:16
반응형
type IsTuple<T extends readonly any[] | { length: number }> = 
  [T] extends [never] ? // T가 never 라면 무조건 false여야 한다.
    false : 
    T extends readonly any[] ? // T가 readonly any[] 라면,
      number extends T['length'] ? // T의 length가 숫자 상수인지 아닌지 검증하기 위해 number extends T['length']를 한다.
        false : // 만약 true라면 T['length']는 number인 것이기에 튜플이 아니다.
        true : // 만약 false라면 T['length']는 숫자 상수 타입이기 때문에 튜플이 맞다.
      false; // 애초에 T가 readonly any[]가 아니라면 튜플이 아니다.

주석으로 설명을 대체한다.

반응형