1

私はタイプ・スクリプトでimmutable.jsを使用しようとしていますが、コンパイラにMapにイテレータがあることを確信させています。コードはES6で動作するので、なぜTypeScriptでは動作しないのか分かりません。TypeScriptコンパイラがimmutable.jsを見つけることができません

コード

import {Map} from "immutable"; 

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

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

期待出力:実際

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

出力:

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); 
} 
関連する問題