【发布时间】:2021-02-04 07:02:43
【问题描述】:
我想使用另一个函数为接口运行方法(这样我可以在执行过程中抛出一些上下文信息)。我希望我可以让 Typescript 使用 Parameters 实用程序类型为我完成繁重的工作......但我似乎无法让它工作。
这是简化的情况:
interface Store {
read(key: string): string
write(key: string, data: string): boolean
}
function run<T extends keyof Store>(store: Store, job: T, ...args: Parameters<Store[T]>) {
return store[job](...args);
}
还有错误:
(parameter) args: Parameters<Store[T]>
Expected 2 arguments, but got 0 or more.
temp.ts(3, 11): An argument for 'key' was not provided.
有谁知道我可以如何做到这一点,而不必手动编写run 的所有函数签名?我对打字稿有点陌生,一定缺少一些东西。
顺便说一句,vscode 可以正确判断这些用法的错误之处:vscode doing magic?
【问题讨论】:
标签: typescript parameters