0
入力オブジェクトに応じて正しい型を返す型付きPromise.props(...)ユーティリティ関数を作成したいと考えています。TypescriptでPromise.props(...)にジェネリック型を追加
static async props<T extends {[key: string]: Promise<S>|S}, S, U extends { [key in keyof T]: S}>(obj: T): Promise<U> {
const promises = [];
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
promises.push(obj[key]);
}
const results = await Promise.all(promises);
return results.reduce((map, current, index) => {
map[keys[index]] = current;
return map;
}, {});
}
これまで入力パラメータであるT
がありました。また、同じキーを持ちますが、異なる値の型を持つU
を定義しました。
プロミスから結果の型を取得することは可能ですか?入力パラメータのキーを取得するのと同じ方法で取得できますか?
const result = await this.props({
val1: Promise.resolve('test'),
val2: Promise.resolve(123),
val3: ['a', 'b', 'c']
});
IDEはその後、知っておくべきこと:私は、これは動作するはずだと思う
result.val1 is a string
result.val2 is a number
result.val3 is an array
、このようになっているはずの機能を使用して
コンパイラを幸せにするために '' 'obj [key]' ''を '' '' obj [key as any] ''に変更してください。それとは別に、それは働いている –