// *** before: ***
type Colors = "red" | "green" | "blue";
const palette: Record<Colors, string | [number, number, number]> = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255],
};
// palette.red is string | [number, number, number] - never narrowed to the tuple
// *** in version 4.9: ***
const paletteChecked = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255],
} satisfies Record<Colors, string | [number, number, number]>;
//paletteChecked.red is exactly [number, number, number], and the keys are still
//checked