Solved
TypeScriptのsatisfiesとasの違いがよく分からない
Taro · 6/3/2026 · 18 views
TypeScript 4.9で追加されたsatisfiesキーワードと、従来のas構文の違いがいまいち理解できません。使い分けを教えてください。
Taro · 6/3/2026 · 18 views
TypeScript 4.9で追加されたsatisfiesキーワードと、従来のas構文の違いがいまいち理解できません。使い分けを教えてください。
一番の違いは「型の絞り込みを保ったまま検証できるかどうか」です。
asは強制的に型をキャストするので、間違った型を指定してもコンパイラは基本的に黙って通してしまいます(実質的に型チェックをすり抜けられる)。
一方satisfiesは、指定した型に合致しているかをチェックしつつも、変数自体の型は元の(より具体的な)推論結果のまま保持してくれます。
例えば const config = { color: 'red' } satisfies { color: string } と書くと、configの型は{ color: string }ではなく{ color: 'red' }のリテラル型として保持されるので、後続のコードで自動補完やより厳密なチェックが効きます。
「型が合っているか検証したいだけで、変数の型そのものは緩めたくない」場合はsatisfies、「どうしても型を上書きしたい」場合だけasを使う、という使い分けがおすすめです。
✓ This question has been solved