[TypeScript] generic 이란?

손종일·2020년 11월 29일
0
post-thumbnail

TypeScript

Generic

제네릭스는 타입스크립트에서 함수 클래스 인터페이스 Alais를 사용하게 될 때, 호환을 맞춰야 할 때 사용하는 문법입니다.

Interface 사용 방법

merge 함수에 인자에는 무슨 값이 들어오는지 모르는데 Type을 어떻게 해야될까요?

function merge(a, b) {
  return {
    ...a,
    ...b
  }
}

any를 사용하여 타이블 지정할 수 있으나, merge. ~ 하고 안에 있는 값을 확인 할 수 없습니다.

function merge(a: any, b: any) {
  return {
    ...a,
    ...b
  }
}

하지만 generics를 사용하면 안에 있는 값을 조회할 수 있습니다.

function merge<T1, T2>(a: T1, b: T2) {
  return {
    ...a,
    ...b
  }
}

const merged = merge({ me : 1}, { you : 2 });
console.log(merged)	//{ me : 1 , you : 2 }
console.log(merged.me)	// 1

Interface를 사용한 Generic의 경우

interface Items<T> {
  list: T[];
}
// generic으로 String을 넣었기 때문에 list의 값은 스트링이어야 한다.
const items: Items<string> = {
  list: ['a','b']
}

Type Alias를 사용한 Generic의 경우

type Items<T, V> = {
  list: T[];
  value: V;
}                                                        
// generic으로 String을 넣었기 때문에 list의 값은 스트링이어야 한다.
const items: Items<string, string> = {
  list: ['a','b'],
  value: 'a'
}
profile
Allday

0개의 댓글