できない.dev

satisfies 演算子

別名: satisfies / satisfies operator / satisfies演算子

TypeScript 4.9 で追加された演算子。`式 satisfies 型` で型適合を検査しつつ、式自身の推論結果は上書きせずそのまま残す。型注釈との違いがここにある。

#typescript#satisfies#type-check#type-inference#operator

公開:

定義

satisfies 演算子は TypeScript 4.9 で追加された演算子で、式 satisfies 型 と書くと「式がその型に適合するかを検査しつつ、式自身の推論結果はそのまま残す」。
型注釈 : 型 のように推論を型側へ丸めてしまわないのが最大の特徴。

詳細

const palette = { red: [255, 0, 0] } satisfies Record<string, [number, number, number]> のように書くと、キーの過不足や値の型の誤りはエラーになる一方、palette.rednumber[] ではなく [number, number, number] のまま使える。
型注釈だと推論が注釈側に丸められて具体性を失うが、satisfies は検査と具体的推論の両立を狙う。

よくある誤解

  • 型注釈(: 型)の別名: 違う。
    注釈は変数の型を固定するが、satisfies は検査だけ行い推論を保つ。
  • as const の代用: 役割が別。
    リテラル固定は as const、適合検査は satisfies で、併用される場面も多い。

関連

絞り込みが効かない事例は satisfies を使っても型が絞り込まれない、リテラル固定は const assertion を参照。