더북(TheBook)

옵셔널이란 기존 타입에 undefined가 유니언된 것과 같습니다. 기존 타입 | undefined가 기존 타입보다 넓은 타입이므로 옵셔널인 객체가 더 넓은 타입입니다.

배열과 다르게 객체에서는 속성에 readonly가 붙어도 서로 대입할 수 있습니다.

type ReadOnly = {
  readonly a: string;
  readonly b: string;
};
type Mandatory = {
  a: string;
  b: string;
};
const o: ReadOnly = {
  a: 'hi',
  b: 'world',
};
const m: Mandatory = {
  a: 'hello',
  b: 'world',
};
const o2: ReadOnly = m;
const m2: Mandatory = o;

이렇게 넓은 타입, 좁은 타입만 구분할 수 있다면 누가 누구에게 대입할 수 있는지 없는지를 쉽게 판단할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.