function debouncePromise<TParams extends Array<unknown>, TRes>(
fn: (a: TParams) => Promise<TRes>,
time: number,
) {
let timerId: ReturnType<typeof setTimeout> | undefined = undefined;
return function debounced(...args: TParams) {
if (timerId) {
clearTimeout(timerId);
}
return new Promise((resolve) => {
timerId = setTimeout(() => resolve(fn(...args)), time); //<= A spread argument must either have a tuple type or be passed to a rest parameter.ts(2556)
});
};
}
我已经在函数中输入了扩展参数作为剩余参数。为什么我在已显式键入的参数/变量上收到错误?我该如何解决这个问题?
更新: ts游乐场
对第 2 行进行了更改 到
fn: (...a: TParams) =>
就解决了!