[TS] Chapter 7. Typescript 제네릭(Generics)_2

변진상·2023년 6월 7일
0

Typescript 학습

목록 보기
12/13

목표: 제네릭에 대해 학습한다.

  • generic utility type
  • generic types vs. union type

generic utility type

partial utility type

partial 유틸리티 타입은 interface로 규정한 객체의 구조 중 property와 method를 선택적으로 구현할 수 있도록 한다.

/// partial type

interface userInfo {
  name: string;
  age: number;
  money: number;
}


function creatUser(name: string, age: number, money: number): userInfo {
  let user: Partial<userInfo> = {};	// Partial utility type을 쓰지 않으면 userInfo Interface의 contract를 지키지 않았다고 에러를 띄운다.
  user.name = "otter1";
  user.age = 11;
  user.money = 1121212;

  return user as userInfo;
}

Readonly utility type

/// Readonly utility type

const userList: Readonly<userInfo[]> = [
  // userInfo 타입의 요소로 이뤄진 배열을 Readonly로 선언 및 할당
  creatUser("otter1", 11, 111),
  creatUser("otter2", 12, 222),
];

userList.push(creatUser("otter3", 13, 333)); // 리스트에 새로운 user를 추가하려고 하면 ERROR

Generics vs. Union

예를 들어, someVariable<T extends number | string | boolean> T의 값을 유니언을 통해 제약조건을 걸어 주는 것 때문에 헷갈릴 수 있다.

  • Generic은 type parmeter로 정해진 타입 하나로 타입이 고정되어 사용된다.
  • Union은 여러 타입들이 데이터가 입력될 때 그때 그때 유니언 타입들 안에서 사용되는 것이 허용된다.
profile
자신을 개발하는 개발자!

0개의 댓글