더북(TheBook)

number | (number | number[])[] extends ReadonlyArray<infer InnerArr>은 분배법칙에 의해 number extends ReadonlyArray<infer InnerArr> | (number | number[])[] extends ReadonlyArray<infer InnerArr>과 같습니다. number extends ReadonlyArray<infer InnerArr>extends에서 false가 되므로 number가 되고, (number | number[])[] extends ReadonlyArray<infer InnerArr>extends에서 true가 되어 infer를 수행한 결과 number | number[]가 됩니다. 이 둘을 유니언하면 number | number | number[]이고, 최종적으로 number | number[]가 되는 것입니다. 그래서 InnerArrnumber | number[]입니다.

FlatArray<number | number[], -1>에서 이제 Depth가 -1이 되었으므로 type FlatArray<Arr, -1> = Arr에 따라 FlatArray<number | number[], -1>number | number[]입니다.

flat 메서드는 FlatArray<A, D>[]입니다. 뒤에 []가 붙어 있음에 주의합니다. 따라서 최종 결과물은 number | number[]가 아니라 (number | number[])[]입니다. 그리고 이것이 R의 타입입니다.

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