기존 타입 정보를 유지하면서 해당 값이 특정 타입 조건을 충족하는지 확인할 때 사용
ex- 유니온 타입 다룰 때 이점
type Color = "red" | "green" | "blue";
type RGB = [red: number, green: number, blue: number];
const palette: Record<Color, string | RGB> = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255]
};
// ⚠️ 오류 발생
const greenNormalized = palette.green.toUpperCase();
palette.green의 타입은 string | RGB로 변환 추론되어서 .toUpperCase() 호출 시 타입 에러 발생함
const palette = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255]
} satisfies Record<Color, string | RGB>;
// ✅ 정상 동작
const greenNormalized = palette.green.toUpperCase();
그러나 satisfies를 활용하면 palette.green의 타입이 string으로 추론되어 .toUpperCase() 정상적 호출 가능함
즉, satisfies를 사용하면, 의도보다 더 넓은 타입으로 추론되는 일 방지하며 타입 검사 수행할 수 있음
유니온 타입의 타입 체크가 필요할 때 유용
또는
객체 리터럴이 필수적인 타입을 만족해야 하고, 동시에 추가적인 필드가 존재할 수 있는 경우에도 유용하게 활용