최대 1 분 소요

  • type에서 key로 속성을 선택한 새로운 타입을 반환
  • type은 속성을 가지는 인터페이스나, 객체타입이어야함
  • 일부만 받게한다고 생각하면 편할듯

Pick<TYPE, KEY>


interface IUser {
  name: string,
  age: number,
  email: string,
  isValid: boolean
}
type TKey = 'name' | 'email';

const user: Pick<IUser, TKey> = {
  name: 'Neo',
  email: 'thesecon@gmail.com',
  age: 22 // TS2322: Type '{ name: string; email: string; age: number; }' is not assignable to type 'Pick<IUser, TKey>'.
};

// 변경된 모습
interface INewType {
  name: string,
  email: string
}


/**
 * 인터페이스의 프로퍼티중 일부(name,age)는 required
 * gender는 optional로 받도록 설정한다. 
 */
type PickPerson2 = Pick<IPerson, "name" | "age"> & Pick<Partial<IPerson>, "gender">;
const pickPerson2: PickPerson2 =
{
    name: "Jade",  // required
    age: 29,       // required
    gender: "male" // optional
}

참고 참고