[typescript] exercises 8 :Utility Types

KoEunseo·2023년 2월 14일
1

typescript

목록 보기
14/23

Utility Types

type PowerUser = Omit<User, "type"> & Omit<Admin, "type"> & {
    type: 'powerUser'
};

User와 Admin에서 타입을 없애고 새로운 타입으로 'powerUser'를 지정해준다.

type PowerUser = Pick<User, "name" | "age" | "occupation"> & Pick<Admin, "name" | "age" | "role"> & {
    type: 'powerUser'
};

마우스를 올렸을때 위와 같이 나오는데, 결국 아래와 같다.

type PowerUser = {
  type: 'powerUser',
  name: string,
  age: number,
  occupation: string,
  role: string
}

타입이 powerUser인데 occupation이나 role 둘중 하나가 없다면 에러가 난다. User | Admin이 아니게 되는것.

결론적으로 User타입(타입을 제외한), Admin타입(타입을 제외한), {type: 'powerUser'} 의 합집합이다.
이렇게 타입을 가공할때는 인터페이스로 하면 안되고 type으로 해야하는 것 같다.

0개의 댓글