※ほとんど以下の翻訳のようなものなのでドキュメントを読んでもらった方が正確です
ある式がある型にマッチすることを保証したいが、一方で推論結果も保持したいというケースに使えるもの、と書いている
blueをtypoしていることを検知できているので良さげに見えるが、palette.redがtupleであるという型推論の結果が失われてしまっている。
そこでsatisfiesオペレーターを使うと型推論の結果を変えずに指定した型を満たしているかをvalidateすることができる。
先ほどとは違い、palette.redがtupleであるという型情報は失われていないし、blueのtypoも検知できている。
このように Record<Colors, unknown>
を満たす、という条件にしてやると、プロパティの検査だけをすることができる。型推論の結果には影響を与えないので、greeenがbooleanの値であるという情報はそのまま使える。