function whatever(object, methodName, args) {
return object[methodName](...args);
}
是否可以输入以上内容以便强制执行以下内容:
methodName
是object
的键。object[methodName]
是可调用的,它的参数是...args
。whatever(object, methodName, args)
的返回类型是object[methodName](...args)
的返回类型。
我能找到的最接近的是 function.apply
的定义,但它与上面的定义不太一样。
最佳答案
我认为这可以解决问题:
function callMethodWithArgs<
M extends keyof T,
T extends { [m in M]: (...args: Array<any>) => any },
F extends T[M]
>(obj: T, methodName: M, args: Parameters<F>) {
return obj[methodName](...args) as ReturnType<F>;
}
虽然需要 TS 3!
关于typescript - 使用参数调用对象的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129289/