(TS 2556) 为什么我在已经显式键入并作为剩余参数传递的展开参数上收到类型错误?

问题描述 投票:0回答:1
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游乐场

node.js typescript typescript-generics async.js
1个回答
0
投票

对第 2 行进行了更改 到

fn: (...a: TParams) =>
就解决了!

© www.soinside.com 2019 - 2024. All rights reserved.