【发布时间】:2020-08-04 08:29:48
【问题描述】:
在将流代码转换为打字稿时,使用迭代器时会发生错误。迭代器缺少一些东西
const iter: Iterator<RouteData> = contentMap.routes();
const contentArray: Array<RouteData> = Array.from(iter);
它给出了以下错误,注意它指向 second 行,所以iter 是正确的类型/contentMap.routes() 的返回是一个迭代器:
Error:(109, 55) TS2769: No overload matches this call.
Overload 1 of 4, '(iterable: Iterable<RouteData> | ArrayLike<RouteData>): RouteData[]', gave the following error.
Argument of type 'Iterator<RouteData, any, undefined>' is not assignable to parameter of type 'Iterable<RouteData> | ArrayLike<RouteData>'.
Property 'length' is missing in type 'Iterator<RouteData, any, undefined>' but required in type 'ArrayLike<RouteData>'.
Overload 2 of 4, '(arrayLike: ArrayLike<RouteData>): RouteData[]', gave the following error.
Argument of type 'Iterator<RouteData, any, undefined>' is not assignable to parameter of type 'ArrayLike<RouteData>'.
为什么会发生这种情况,我该如何解决?
迭代器是在以下位置创建的:
routes():Iterator<RouteData> {
return this._routes.values();
}
typescript 的编译目标是“es6”,所以应该完全支持映射?还是不可能从迭代器创建一个数组,而我做错了(而且 babel 就是那么宽容)?
【问题讨论】:
标签: arrays typescript iterator