function whatever(object, methodName, args) {
return object[methodName](...args);
}
Run Code Online (Sandbox Code Playgroud)
可以输入以上内容,以便强制执行以下操作:
methodName是关键object.object[methodName]是可调用的,它的args是...args.whatever(object, methodName, args)是返回类型object[methodName](...args).我能找到的最接近的是定义function.apply,但它与上面的不完全相同.
ric*_*ilv 30
我认为这样做的诀窍:
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>;
}
Run Code Online (Sandbox Code Playgroud)
但需要TS 3!
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |