Skip to content
TypeScript

satisfies Operator

Type-check while preserving the narrowest type.

By EZ4Code Team
satisfiestype

Code

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

Explanation

satisfies both validates type conformance and preserves the most specific type.

More TypeScript Snippets