R2의 경우에는 Depth가 2입니다. 이때는 다음과 같은 표가 만들어집니다.
▼ 표 3-2 R2의 경우 Depth별 결괏값 정리
Depth |
Arr |
Depth extends -1 |
InnerArr 또는 Arr |
2 |
(number | (number | number[])[])[] |
false |
InnerArr = number | (number | number[])[] |
1 |
(number | number[])[]) |
false |
InnerArr = number | number[] |
0 |
number | number[] |
false |
InnerArr = number |
-1 |
number |
true |
Arr = number |
R2의 타입은 number[]입니다. flat 메서드는 FlatArray<A, D>[]이므로 마지막에 []를 붙여야 합니다.
flat 같은 타입을 스스로 만드는 것은 매우 어렵습니다. 특히 Depth를 1 낮추기 위해 인덱스 접근 타입을 사용하는 것은 쉽게 상상하기 힘듭니다. 하지만 직접 타입을 만들지는 못하더라도 만들어진 타입을 보고 왜 이런 결과물이 나오는지 분석할 수는 있어야 합니다. 한 번에 이해하기 힘들겠지만 차근차근 한 단계씩 밟아나가며 분석해보세요. 인덱스 접근 타입이나 분배법칙 같은 개념이 아직 생소하다면 2장으로 돌아가서 복습하는 것이 좋습니다.
flat 메서드에 대한 분석이 완벽하게 이해되었을 때 다음 절로 이동하세요.