Object.entries()
の返り値でkeyが一律string
になってしまうため、返り値の型を厳格にしたい。
上記の例だと(["a", number] | ["b", string] | ["c", boolean])[]
と型推論されるのが理想。
1. ユーティリティ型の実装
Mapped Typesを使う方法
Mapped Typesでkeyとvalueを関連付ける方法1。今回の中だと一番シンプルな気がする。
Distributive Conditional Typesを使う方法
Distributive Conditional TypesでUnion型のkeyを分散させ、keyとvalueを関連付ける方法。
inferを使う方法
タプルにする方法
他と比べればシンプルだが、keyとvalueの両方がUnion型なタプルとなってしまうので厳格さは欠けてしまう。
2. ラッパー関数の実装
23