다형성

👶 TypeScript

다형성

다형성 함수와 타입처럼, 클래스와 인터페이스도 기본값과 상한/하한 설정을 포함한 다양한 제네릭 타입 매개변수 기능을 지원합니다. 제네릭 타입의 범위는 클래스나 인터페이스 전체가 되게 할 수도 있고 특정 메서드로 한정할 수도 있습니다. class FirstMap{ // ① constructor(initialKey: K, initialValue: V){ // ② // ... } get(key: K): V { // ③ // ... } set(key: K, value: V){ // ... } merge(map: FirstMap): FirstMap{ // ④ // ... } static of(k: K, v: V): FirstMap{ // ⑤ // ... } } class와 함께 제네릭을 선언했으므로 클래스 전체에..

👶 TypeScript

한정된 다형성

한정된 다형성 이번엔 이진트리 예제를 사용합니다. 기본적으로 이진트리의 특징은 아래와 같습니다. 이진트리는 자료구조입니다. 이진트리는 노드를 갖습니다. 노드의 값을 가지며 최대 두 개의 자식 노드를 가리킬 수 있습니다. 노드는 잎 노드(leaf node: 자식이 없음) 또는 내부 노드(inner node: 적어도 한 개의 자식을 가짐) 둘 중 하나의 타입을 갖습니다. "T는 제네릭 타입이며, 이것은 T와 같은 타입이어야 한다"는 말로 표현할 수 없는 상황이 많습니다. 때론 U 타입은 적어도 T 타입을 포함하는 기능이 필요합니다. 이러한 상황을 U가 T의 상한 한계(upper bound)라고 설명합니다. 아래와 같은 세 종류의 노드를 갖는 이진트리를 구현한다고 해보겠습니다. 일반 TreeNode 자식을 갖..

👶 TypeScript

다형성

다형성 모든 타입은 구체 타입(concrete type)입니다. boolean string Date[] {a: number} | {b: string} (numbers: number[]) => number 기대하는 타입을 정확하게 알고 있고, 실제 이 타입이 전달되었는지 확인할 때는 구체 타입이 유용합니다. 하지만 때론 어떤 타입을 사용할지 미리 알 수 없는 상황이 있는데, 이런 상황에선 함수를 특정 타입으로 제한하기 어렵습니다. JavaScript로 filter를 이용하여 배열을 반복하면서 정제하는 코드를 아래처럼 구현할 수 있습니다. function filter(array, f){ let result = [] for(let i = 0; i < array.length; i++) { let item = a..

개발자 린다씨
'다형성' 태그의 글 목록