더북(TheBook)

다음과 같이 컨디셔널 타입에도 사용할 수 있습니다.

type ElementType<T> = T extends any[] ? ElementType<T[number]> : T;

다만 타입 인수로 사용하는 것은 불가능합니다.

type T = number | string | Record<string, T>;
// Type alias 'T' circularly references itself.

이 경우는 타입 인수를 쓰지 않는 방식으로 수정해야 합니다.

type T = number | string | { [key: string]: T };

자바스크립트에서 재귀 함수를 사용할 때는 Maximum call stack size exceeded 에러를 조심해야 합니다. 재귀 함수의 호출이 종료되는 조건이 없어 무한하게 호출이 일어날 때 발생하는 에러입니다.

자바스크립트

function a() {
  a();
}
a(); // Uncaught RangeError: Maximum call stack size exceeded
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.