Skip to content
TypeScript

satisfies 연산자

가장 좁은 타입을 보존하면서 타입 검사.

#satisfies#type

Code

typescript
type Colors = "red" | "green" | "blue";
type RGB = [number, number, number];

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

// Preserves precise type
const r = palette.red;   // number[]
const g = palette.green; // string

// Contrast: annotation loses precise type
const palette2: Record<Colors, string | RGB> = {
  red: [255, 0, 0],
  green: "#00ff00",
  blue: [0, 0, 255]
};
const r2 = palette2.red; // string | RGB