카카수(kakasoo) 2023. 3. 19. 22:54
반응형
type Flatten<T extends any[]> = T extends [infer R, ...infer Rest] ? R extends any[] ? [...Flatten<R>, ...Flatten<Rest>] : [R, ...Flatten<Rest>] : [];

배열인지 아닌지에 따라 재귀적으로 풀 것인지 결정하면 된다.

만약 T가 infer R과 infer Rest로 구성된 배열일 때, R이 배열인지 아닌지에 따라 재귀적으로 접근하면 된다.

Rest는 나머지 요소들이기 때문에 무조건 배열이며 따라서 재귀적으로 접근하면 된다.

만약 T가 이러한 배열이 아닐 경우에는 빈 배열이 된다.

반응형