한정된 다형성으로 인수의 개수 정의하기 가변 인수 함수 (= 임의의 개수의 인수를 받는 함수)에서도 한정된 다형성을 사용할 수 있습니다. 예를 들어 JavaScript의 내장 call 함수를 직접 구현하면, 아래처럼 정의하고 사용할 수 있습니다. call은 함수 하나와 임의 개수의 인수를 받아서 이 인수들을 함수에 건네 호출하는 함수입니다. function call( f: (...args: unknown[]) => unknown, ...args: unknown[] ): unknown { return f(...args) } function fill(length: number, value: string): string[] { return Array.from({length}, () => value) } cal..
한정된 다형성 이번엔 이진트리 예제를 사용합니다. 기본적으로 이진트리의 특징은 아래와 같습니다. 이진트리는 자료구조입니다. 이진트리는 노드를 갖습니다. 노드의 값을 가지며 최대 두 개의 자식 노드를 가리킬 수 있습니다. 노드는 잎 노드(leaf node: 자식이 없음) 또는 내부 노드(inner node: 적어도 한 개의 자식을 가짐) 둘 중 하나의 타입을 갖습니다. "T는 제네릭 타입이며, 이것은 T와 같은 타입이어야 한다"는 말로 표현할 수 없는 상황이 많습니다. 때론 U 타입은 적어도 T 타입을 포함하는 기능이 필요합니다. 이러한 상황을 U가 T의 상한 한계(upper bound)라고 설명합니다. 아래와 같은 세 종류의 노드를 갖는 이진트리를 구현한다고 해보겠습니다. 일반 TreeNode 자식을 갖..