더북(TheBook)

Depth21일 때까지만 대비되어 있으므로 Depth22 이상이면 타입스크립트는 제대로 타입을 추론할 수 없을 것입니다. 하지만 실제 코드에서 Depth22로 할 가능성은 매우 희박합니다. 타입스크립트가 flat 메서드를 만들 때 100% 정확한 타입은 아니더라도 대부분의 경우에 대응할 수 있게 타이핑해둔 것입니다.

조금 전에 Depth-1이 아닌 경우는 FlatArray가 다음과 같이 된다고 분석했습니다.

// Depth가 -1이 아닌 경우
type FlatArray<(number | (number | number[])[])[], 1> =
  Arr extends ReadonlyArray<infer InnerArr> // true
    ? FlatArray<number | (number | number[])[], 0>
    : Arr;

따라서 FlatArray<(number | (number | number[])[])[], 1>FlatArray<number | (number | number[])[], 0>이 됩니다. 아직 Depth가 -1이 아니므로 한 번 더 Arr extends ReadonlyArray<infer InnerArr>을 거칩니다. extends의 결과는 true인지, InnerArr이 어떻게 추론되는지 코드로 확인해봅시다.

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