「オブジェクトをとり、keyとして含まれるstringもしくはnumber型のユニオン型を生成します」と書かれています。説明そのままで、以下のようにkeyからユニオン型を生成することができます。これによって、わざわざオブジェクトとは別にユニオン型を定義する必要がなくなるので、オブジェクトに変更を加えた際にユニオン型を手動で変更する必要がなくなり、保守性が向上します。Person型だった場合、以下状態と解釈できます。継承して作成された型に制限して活用することができるようになります。行ったのと同じような挙動をします。型を絞り込むために活用します。ドキュメントの例がわかりやすいのでそのまま転記しておきます。arg;}//https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraintsこれを元に、今回の回答にコメントを足します。100のいづれかである。typeはユニオン型と組み合わせて活用されます。オブジェクトのキーをユニオン型で定義した値に制限することが可能です。18};この機能を型定義の中で活用することで、仮想的に以下のように分解されます。(このコードはこのままではエラーになります。)つまり、ユニオン型の要素(=Tが持つキーに含まれる値)をそれぞれキーとして持ち、かつそれぞれに対応する型を持つinterface型になります。100のいづれかである。キーはGenericsの第二引数に含まれないのでエラーになります。キーをもつプロパティが定義されていないのでエラーになります。含まれないキーなので、extendsで弾かれてエラーになります。最終的なコードは以下です。修飾子をつけることによって、対象を読み取り専用にすることができます。//Errorその他の要素は00004-Pickと同じなので割愛します。00011-tuple-to-objecttuple型で定義した変数を、そのままオブジェクトに変換する場合の型です。};Playground_00011_tuple_to_objectplaygroundに用意されている以下の条件も通すためには、上の実装がいいかなーと思っているのですが、厳密にやろうとするともう少しいい解答もないかなー。symbolと同じです。true:3}//Error上のコードのように複数回同じ値をキーに取った場合にはエラーになります。