gpt4 book ai didi

javascript - TypeScript 编译器无法在 for of 循环中找到 immutable.js Map 迭代器

转载 作者:行者123 更新时间:2023-11-30 15:44:25 26 4
gpt4 key购买 nike

我正在尝试将 immutable.js 与 TypeScript 结合使用,但很难让编译器相信 Map 具有迭代器。该代码在 ES6 中工作,所以我不确定为什么它在 TypeScript 中不起作用。

代码

import {Map} from "immutable";

const m = Map({ a: 1 });

for (const [key, value] of m) {
console.log(key, value);
}

预期输出:

1

实际:

TSError: ⨯ Unable to compile TypeScript
src/test.ts (6,28): Type must have a '[Symbol.iterator]()' method that returns an iterator. (2488)

ES6 示例:

const Immutable = require( "immutable");

const m = Immutable.Map({ a: 1 });

for (const [key, value] of m) {
console.log(key, value);
}

输出:

1

额外说明:

我也尝试过 m.entries()m.entrySeq() 都产生相同的错误。

我正在使用 TypeScript 2.0.3

最佳答案

好像immutable.js的定义文件里没有这个,不过你可以自己添加:

import {Map} from "immutable";

declare module "immutable" {
interface Map<K, V> {
[Symbol.iterator](): IterableIterator<[K,V]>;
}
}

const m = Map({ a: 1 });

for (const [key, value] of m) { // should be fine
console.log(key, value);
}

关于javascript - TypeScript 编译器无法在 for of 循环中找到 immutable.js Map 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com