1

Я пытаюсь использовать immutable.js с TypeScript, но с трудом убеждаю компилятор, что Map имеет итератор. Код работает в ES6, поэтому я не уверен, почему он не работает в TypeScript.Компилятор TypeScript не может найти immutable.js Map iterator for for loop

Код

import {Map} from "immutable"; 

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

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

Ожидаемый результат:

a 1

Actual:

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); 
} 

Выход:

a 1

Дополнительные примечания:

Я также попытался m.entries() и m.entrySeq() все производят ту же самую ошибку.

Я использую машинопись 2.0.3

ответ

2

кажется, что файл определения для 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^