produce
次のシグネチャを持つメソッドがあります。
interface ProduceConditions {
[key: string]: Function|Promise<any>;
}
produce(conditions: ProduceConditions, input: any): Promise<object>|object;
返される(解決された)オブジェクトには、オブジェクトと同じキーが存在しますconditions
。
ベストアンサー1
質問の内容を正しく理解していれば、入力はいくつかのキーのセットを持つconditions
の実装となりProduceConditions
、戻り値 (Promise にラップされているかどうかに関係なく) は同じキーを持ちますが、値はすべて解決されます。
その場合、探している署名は次のようになります。
produce<T extends ProduceConditions, U extends { [key in keyof T]: any }>(conditions: T, input: any): Promise<U> | U
ここでは、入力型がT
の定義を満たしProduceConditions
、出力型U
が と同じキーを持つという要件を満たす、入力と出力を表す 2 つのジェネリック型を使用しましたT
。