type JSONType =
| string
| boolean
| number
| null
| JSONType[]
| { [key: string]: JSONType };
const a: JSONType = 'string';
const b: JSONType = [1, false, { "hi": "json" }];
const c: JSONType = {
prop: null,
arr: [{}],
}
JSONType 타입 별칭을 선언해보았는데, 이와 같이 재귀 타입을 사용하면 복잡한 구조도 쉽게 표현할 수 있습니다.
재귀 타입을 통해 더 많은 타입을 만들어낼 수 있습니다. 예를 들어 배열 타입을 거꾸로 뒤집는 것도 가능합니다. [1, 2, 3] 타입이 있다면 [3, 2, 1]로 만드는 셈인데, 어떻게 만들 수 있을지 한번 생각해보세요. 다음 코드를 보기 전에 스스로 만들어보는 연습을 하면 좋습니다. 이 절은 재귀 타입을 다루는 절이므로 재귀 타입을 사용해 만들어보세요. 제일 뒤의 것을 하나씩 앞으로 보내면 됩니다. 제일 뒤의 것은 추론을 통해 가져올 수 있습니다.