더북(TheBook)

이 이점을 누리면서 sriius에서 오타가 났다는 것을 알릴 방법은 없을까요? 이게 바로 satisfies 연산자가 나온 이유입니다. 객체 리터럴 뒤에 'satisfies 타입'을 표기하면 됩니다.

const universe = {
  sun: "star",
  sriius: "star", // sirius 오타
  earth: { type: "planet", parent: "sun" },
} satisfies { 
  [key in 'sun' | 'sirius' | 'earth']: { type: string, parent: string } | string
};
// Type '{ sun: string; sriius: string; earth: { type: string; parent: string; }; }' does not satisfy the expected type '{ sun: string | { type: string; parent: string; }; sirius: string | { type: string; parent: string; }; earth: string | { type: string; parent: string; }; }'. Object literal may only specify known properties, but 'sriius' does not exist in type '{ sun: string | { type: string; parent: string; }; sirius: string | { type: string; parent: string; }; earth: string | { type: string; parent: string; }; }'. Did you mean to write 'sirius'?

이러면 universe의 타입은 타입 추론된 것을 그대로 사용하면서, 각각의 속성들은 satisfies에 적은 타입으로 다시 한번 검사합니다. 여기서 sriius 오타가 발견됩니다.

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