将数组传递给异步库 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[]
。
我有以下 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[]
。