본문 바로가기
TypeScript

Generic

by eddypark 2023. 9. 1.

- 선언 시점이 아닌 생성 시점에 타입을 명시하여 하나의 타입이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다.

- 한 번의 사용으로 다양한 타입에 재사용이 가능하다.

- T는 제네릭을 선언할 때 관용적으로 사용되는 식별자이다. (반드시 T를 사용하는 것은 아니다.)

function a<T>(arg: T): T {
    return arg;
}

let x = a<string>("wangi");
console.log(x);        // wangi 출력 타입은 string
let y = a("wangi");
console.log(y);        // wangi 출력 타입은 string
let z = a(12);
console.log(z);        // 12 출력 타입은 number
   - class에서 generic 사용이 가능하다. 클래스 이름 뒤에 <> 사용

   - 외부로부터 타입을 받아들여 클래스 내부에 입력된 타입을 적용시킬 수 있다.

class a<T> {
    m: T;
    n: (x: T, y: T) => T;
}

let b = new a<number>();                 // 인스턴스 number 타입으로 사용
b.m= 1;
b.n= function(x, y) { return x + y; };
 console.log(b.n(b.m, 5));               // 6

let c = new a<string>();                 // 인스턴스 string 타입으로 사용
c.m= "21";
c.n= function(x, y) { return x + y; };
console.log(c.n(c.m, "test"));           //21test

'TypeScript' 카테고리의 다른 글

Interface  (0) 2023.09.05
타입 앨리어스  (0) 2023.09.04
Module  (0) 2023.08.31
Decorator  (0) 2023.08.30
Class  (0) 2023.08.30