satisfies

❓질문

타입스크립트 satisfies 키워드에 대해 설명해주세요.


💡 조사하기전 내가 알고 있던 내용

처음 들어봤습니다.


🏫 정리한 내용

satisfies키워드는 기존 타입 정보를 유지하면서 해당 값이 특정 타입 조건을 충족하는지 확인할 때 사용됩니다.
예를 들어, satisfies는 유니온 타입을 다룰 때 이점이 있습니다. 구체적인 코드를 통해 설명을 드리면 좋을 것 같습니다.

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,225]
};

const greenNormalized = palette.green.toUpperCase(); // 에러 발생

이때 palette.gree은 string | RGB 로 변환 추론되기때문에 호출 시 타입에러가 발생합니다.

const palette = {
  red : [255,0,0],
  green : "#00ff00",
  blue : [0,0,225]
} satisfies Record<Color, string | RGB>;

const greenNormalized = palette.green.toUpperCase(); // 정상 동작

하지만 위와 같이 satisfies 를 활용하면 타입이 string 으로 추론되어 정상적으로 호출할 수 있습니다. 즉 의도보다 더 넓은 타입으로 추론되는 일을 방지하며 타입 검사를 수행할 수 있습니다.