Typescript Generic

이동현·2023년 4월 5일
0

코드 캠프 블로그

목록 보기
20/50

generic 타입

// 1. 문자/숫자/불린 기본타입
// prettier-ignore
const getPrimitive = (arg1: string, arg2: number, arg3: boolean): [boolean, number, string] => {
  return [arg3, arg2, arg1];
};
const result = getPrimitive("철수", 123, true);

// 2. any 타입(그냥 자바스크립트랑 같음)
const getAny = (arg1: any, arg2: any, arg3: any): [any, any, any] => {
  console.log(arg1 + 100); //any는 아무거나 다 됨!
  return [arg3, arg2, arg1];
};
const result = getAny("철수", 123, true);

// 3. unknown 타입
const getUnknown = (arg1: unknown, arg2: unknown, arg3: unknown): [unknown, unknown, unknown] => {
  if (typeof arg1 === "number") {
    console.log(arg1 + 100); //t사용할 때 알아보고 써야 하며 조건을 걸지 않으면 에러 처리된다.
  }
  return [arg3, arg2, arg1];
};
const result = getUnknown("철수", 123, true);

// 4. generic 타입
//MyType이 return에 들어오는 값에 의해 타입이 계속 변하게 된다., 안전한 any정도로 생각하면 편하다.
function getGeneric<MyType1, MyType2, MyType3>(arg1: MyType1, arg2: MyType2, arg3: MyType3): [MyType3, MyType2, MyType1] {
  return [arg3, arg2, arg1];
}
const result = getGeneric("철수", 123, true);

// 4. generic 타입 -2
function getGeneric2<T1, T2, T3>(arg1: T1, arg2: T2, arg3: T3): [T3, T2, T1] {
  return [arg3, arg2, arg1];
}
const result = getGeneric2("철수", 123, true);

// 4. generic 타입 -3
function getGeneric3<T, U, V>(arg1: T, arg2: U, arg3: V): [V, U, T] {
  return [arg3, arg2, arg1];
}
const result = getGeneric3("철수", 123, true);

// 4. generic 타입 - 화살표 함수
// 타입 추론이 아닌 미리 타입을 명시할 수 있다, 사용자 입장을 배려한것
const getGeneric4 = <T, U, V>(arg1: T, arg2: U, arg3: V): [V, U, T] => {
  return [arg3, arg2, arg1];
};
const result = getGeneric4<string, number, boolean>("철수", 123, true); // 제네릭에서, 타입 명시가 필요한 상황

0개의 댓글