将数组传递给异步库 eachSeries - 期望 'Dictionary<{}>'

Pass array to async library eachSeries - expects 'Dictionary<{}>'

我有以下 TypeScript 代码:

const allDescribeBlocks: Array<ITestSuite> = suman.allDescribeBlocks;

async.eachSeries(allDescribeBlocks, function (block: ITestSuite, cb: Function) {

//....

}, cb);

这将带有警告:

Argument of type ITestSuite[] is not assignable to parameter of type Dictionary<{}>. Index signature is missing in ITestSuite[].

如何修复?

这里是确切的警告:

您是否为异步库安装了最新的类型定义?

npm install --save @types/async

我刚刚检查了他们的来源,它应该接受数组和集合:

export function each<T, E>(arr: T[] | IterableIterator<T>, iterator: AsyncIterator<T, E>, callback?: ErrorCallback<E>): void;
export function each<T, E>(arr: Dictionary<T>, iterator: AsyncIterator<T, E>, callback?: ErrorCallback<E>): void;
export const eachSeries: typeof each;

我认为如果您安装类型定义模块并使用 "typeRoots": ["node_modules/@types"] 将定义目录添加到您的 tsconfig.json,应该可以解决问题。

编辑 - 此外,您应该避免 Array<T> 定义简单类型,而应使用 T[]