더북(TheBook)

매핑된 객체 타입으로 기존 객체의 속성을 가져오면서 옵셔널 수식어를 추가로 붙이고 있습니다. 따라서 모든 객체의 속성이 옵셔널이 됩니다.

일부 속성만 옵셔널로 만들고 싶으면 어떻게 해야 할까요? 예를 들어 앞의 예시에서 a만 옵셔널로 만들고 싶은 상황입니다. 이건 다음 절에서 배워봅시다. 지금까지 배운 지식을 총동원하면 만들 수 있기는 하지만, 이번 절의 내용과 관련이 없으므로 나중으로 미뤄두겠습니다.

이번에는 반대로 모든 속성을 옵셔널이 아니게 만들어보겠습니다. Required 타입입니다.

type MyRequired<T> = {
  [P in keyof T]-?: T[P];
};

type Result = MyRequired<{ a?: string, b?: number }>;
/*
type Result = {
  a: string;
  b: number;
}
*/
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.