typescript Generics

jangdu·2022년 10월 28일
0

typescript

목록 보기
5/16

Generics

typescript의 function, class, interface, type을 사용시 여러 종류에 대해 호환을 맞춰야 하는 상황에서 사용

function

두 객체를 합쳐주는 함수를 만들 때, 두 객체가 어떤 타입이 올지 모르므로 any 타입 사용 가능

function merge(a:any, b:any): any {
    return {
        ...a,
        ...b
    };
}
const merged = merge({foo:1}, {bar: 1});

이런 방식을 사용하면 타입추론이 망가진다. 이럴때 generic을 사용한다.

제네릭 사용법

function merge<A, B>(a: A, b: B): A & B {
    return {
        ...a,
        ...b
    };
}
const merged = merge({foo:1}, {bar: 1});

<>안에 타입의 이름을 넣어서 사용하며, 이렇게 설정 시 제네릭에 해당하는 타입에는 뭐든지 들어오며서 사용할 때 타입이 망가지지 않는다.

이렇게 사용하면 함수의 파라미터로 넣은 실제 값의 타입을 활용한다.

function wrap<t>(param: T){
  return{
    param
  }
}
const wrapped = wrap(10);

type을 any로 변하게 하지 않고 그대로 파라미터로 사용할 수 있다.

---------------------------

interface

interface Items<T> {
  list: T[];
}
const items: Items<string> = {
  list: ['a', 'b', 'c']
};

배열의 타입이 어떤 타입이어도 위 처럼 제네릭을 사용해 설정할 수 있다

type alias또한 똑같이 사용하면 된다.

---------------------------

Class

profile
대충적음 전부 나만 볼래

0개의 댓글