ts-book
ts-book copied to clipboard
전자책 306페이지(전체화면 기준) 질문
3.9 flat 분석하기 파트에서
만약 Depth가 22라서 인덱스 접근 타입이 undefined가 되면 어떻게 될까요? 이때는 최대한 flat한 타입이 나오게 됩니다.
// type R2 = 1 | 2 | 3type R = FlatArray<[[[[[[[[[[[[[[[[[[[[[[[1, 2, [3]]]]]]]]]]]]]]]]]]]]]]]], 21>; // type R = [1, 2, [3]] type R2 = FlatArray<[[[[[[[[[[[[[[[[[[[[[[[1, 2, [3]]]]]]]]]]]]]]]]]]]]]]]], 22>; // type R2 = 1 | 2 | 3
라고 되어있는데 22로 인해 FlatArray의 재귀 호출에서 두 번째 제너릭 인자로 undefined가 넣어지는데 그럼
type FlatArray<Arr, Depth extends number> = { "done": Arr, "recur": Arr extends ReadonlyArray<infer InnerArr> ? FlatArray<InnerArr, [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]> : Arr }[Depth extends -1 ? "done" : "recur"];
여기의 Depth extends number에서 타입 에러가 발생해야 하는 것 아닌가요? 왜 에러가 발생하지 않고 // type R2 = 1 | 2 | 3 이렇게 어쨌든 결과가 나오긴 나오는 것이죠?