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 | RGBExplanation
satisfies both validates type conformance and preserves the most specific type.