問題 & 解答
https://github.com/type-challenges/type-challenges/blob/main/questions/00012-medium-chainable-options/README.md
option(key, value)
を任意の数チェインして、最終的な結果をget()
で呼び出すような 2 つの関数を提供する型を定義する。
全然わからなくて答えをみたので、解析していく。まず、単純にoption
メソッドを持つオブジェクトを考える。
このメソッドの要件は
- 引数は
key
とvalue
で、key
にstring
、value
に任意の型を受ける
- 戻り値はここまで追加された option(オブジェクト)と、今回メソッドに渡された key と value で生成された option(オブジェクト)が合わさったもの。
あとは現在保持している Options を返すようにget
を実装する。
調べたこと
アンビエント宣言(declare
)
JavaScript コードを生成せずに、型推論のためだけの情報を渡すのに使用する。
感想
再帰とはまた違った形式だけれど、地味に汎用性の高い型定義だと思うので覚えておこう