[Typescript] 제네릭(Generic) (1)

Gina·2023년 2월 5일
0

Typescript

목록 보기
1/1
post-thumbnail

제네릭(Generic)?

  • 데이터 타입을 일반화한다는 뜻
  • 어떤 타입이 올지 모를 때, 혹은 여러 타입에 대해 대응하고 싶을 때
  • 선언이 아닌 생성 시점에 타입을 정의
  • 나만의 타입을 사용할 수 있음

제네릭이 없다면?

function identity(arg: number): number {
    return arg;
}

제네릭이 없다면, identity 함수에 특정 타입을 부여해야 함

그런데 arg가 number가 아닐 수도 있다면..?
any를 쓰기에는 받기 싫은 타입이 있을 수도 있으니까!

그럴 때 쓰는게 제네릭!

제네릭 사용법

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

그러면 위와 같이 써봐주자! (T라는 타입 변수를 추가!)

T는 유저가 준 인수의 타입을 캡쳐하고 (number, string, ...) 이 정보를 나중에 사용하기 위해 가지고 있음

이렇게 정의해주고, 함수를 호출하려면 다음과 같이 해줄 수 있다.

  • 이렇게 T에 전달해줄 타입을 직접 명시해줄 수도 있고,

  • 직접 명시를 안해주어도 (일반적으로) 컴파일러가 T의 값을 자동으로 추론할 수 있도록 하기도 한다!

** 하지만 복잡한 코드에서는 컴파일러가 타입을 추론하지 못하는 경우도 왕왕 발생한다고 하니 주의! 그럴 때는 명시적으로 타입 전달을 해주자!

2개 이상의 제네릭도 가능할까?

function multipleGeneric<T, U>(a: T, b: U): [T, U] {
  return [a, b];
}

위와 같이 쓰는 것 가능!

다음 (2)편에서는..

  • 제네릭 타입 (Generic Types)
  • 제네릭 클래스 (Generic Class)
  • 제네릭 제약조건 (Generic Constraints)

참고 자료

profile
🤩

0개의 댓글