본문 바로가기

TypeScript

제네릭

여러 타입에 대해 동작하는 함수를 정의하되, 해당 함수를 정의할 때는 알 수 없고 사용할 때에만 알 수 있는 타입 정보를 사용하고 싶다. 제네릭은 바로 그러한 기능을 제공한다.

타입 변수

함수를 호출하는 시점이 되어야만 알 수 있는 값을 함수 내부에서 사용하기 위해서는 그 값을 담아둘 매개변수가 필요하다.

마찬가지로, 요소를 사용하는 시점에서만 알 수 있는 타입을 담아두기 위해서는 타입 변수(type variable)가 필요하다. 타입 변수와 타입의 관계는 매개변수와 인자 값의 관계와 비슷하다.

컨벤션 상 타입스크립트의 타입 변수는 대문자로 시작하며 PascalCase 명명법을 사용한다.

제너릭 함수

    function getFirstElem<T>(arr: T[]): T {
      /* 함수 본문 */
    }

    const languages: string[] = ['TypeScript', 'JavaScript'];
    const language = getFirstElem<string>(languages); // 이 때 language의 타입은 문자열

제너릭 타입 별칭

타입 별칭 정의에도 제너릭을 사용할 수 있다. 이 때 타입 변수 정의는 별칭 이름 다음에 붙여 쓴다.

    type MyArray<T> = T[];
    const drinks: MyArray<string> = ['Coffee', 'Milk', 'Beer'];

제너릭의 사용처

타입 변수와 제너릭의 핵심은 여러 타입에 대해 동작하는 요소를 정의하되, 해당 요소를 사용할 때가 되어야 알 수 있는 타입 정보를 정의에 사용하는 것이다.

'TypeScript' 카테고리의 다른 글

인터섹션 타입  (0) 2019.10.30
유니온 타입  (0) 2019.10.30
함수  (0) 2019.10.30
타입 별칭  (0) 2019.10.30
객체  (0) 2019.10.30