프로그래밍/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[]가 아니라면 튜플이 아니다.
주석으로 설명을 대체한다.
반응형