オブジェクトを受け取り、すべてのメソッドを呼び出し、メソッドの戻り値にマップされた元のキーを持つ新しいオブジェクトを返す関数の戻り値型注釈を作成するにはどうすればよいですか?オブジェクトのメソッドを呼び出すための戻り値型の注釈
function callMethods<T>(obj: T) {
const objResults = {};
Object.keys(obj).forEach((prop) => objResults[prop] = obj[prop]({}));
return objResults;
}
type MethodArgs = any // some complex object
console.log(callMethods({
a: (_args: MethodArgs): number => 1,
b: (_args: MethodArgs): string => "one",
c: (_args: MethodArgs): number[] => [1]
}));
// => {a: 1, b: "one", c: [1]}
// This object's type should be {a: number, b: string, c: number[]}