이 이점을 누리면서 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 오타가 발견됩니다.