TS satisfies operator
型の互換性を確認することができる
satisfiesなし
code:example.ts
const palette = {
green: "#00ff00",
// typoに気付けない
};
// 型は下記になる
palette: {
red: number[];
green: string;
bleu: number[];
}
paletteの型はアノテーションで守りたいが、そうすると各プロパティの情報が失われる
satisfiesあり
code:example.ts
type Colors = "red" | "green" | "blue";
const palette = {
green: "#00ff00",
} satisfies Record<Colors, string | RGB>;
as constと組み合わせると、型を固定したまま制約をつけることができる
code:example.ts
type Colors = "red" | "green" | "blue";
const palette = {
green: "#00ff00",
} as const satisfies Record<Colors, string | RGB>;