Skip to content

TypeScript Generics Guide

제네릭의 정의

제네릭이란 타입을 마치 함수의 파라미터처럼 사용하는 것을 의미합니다.

예시 )

typescript
// 아래의 함수는 type이 number인 인자를 받고 type이 number인 값을 리턴하는 함수를 정의하는 표현입니다.
function test(arg: number): number {
  return arg;
}

// 위처럼 특정 타입을 명시해야 하는 경우, 일일이 특정 타입들을 다 정의해주어야 하는데, 이는 가독성과 재활용성
// 측면에서 떨어진다고 볼 수 있습니다.
// 이를 해결하기 위해 any 타입을 사용할 수도 있습니다.
function test(arg: any): any {
  return arg;
}

// any를 쓰게 되면 어떤 타입이든 함수가 받을 수 있지만 해당 인자 및 리턴값이 구체적으로 어떤 타입인지 추론이 안
// 되게 되어 실제로는 그냥 자바스크립트를 사용하는것과 다를바 없게 됩니다.

// 결국 위의 문제점들을 해결하기 위한 문법이 제네릭 문법입니다.
// 아래는 test 함수에 Type이라는 타입 변수를 추가한 상태로, Type은 함수 실행 시, 유저가 준 인수의 타입을 캡처하고,
// 이 정보를 나중에 사용할 수 있게 합니다.
// 아래의 함수는 타입을 불문하고 동작하므로 제네릭이라 할 수 있습니다. ( 또한 타입 추론도 가능해 any 타입의 단점을
// 극복 했습니다.)
function tets<Type>(arg: Type): Type {
  return arg;
}

to be continued

IronTrain Tech Blog