web-dev-qa-db-ja.com

whatwg-fetch型宣言ファイルに名前 'Symbol'が見つかりません

d.ts dt〜whatwg-fetchのファイルには、次の宣言が含まれています。

declare class Headers {
    // other code ommited
    [Symbol.iterator](): IterableIterator<[string, string]>;
}

回避策のインターフェイスを作成しようとしましたが、成功しませんでした。次の作業はありません。何になりますか?

interface Symbol {}

interface Symbol<T> {}

interface Symbol {
   iterator: IterableIterator<[string, string]> 
}

interface Symbol<T> {
   iterator: IterableIterator<[string, string]> 
}

編集

見てきました TypeScriptは名前 'IterableIterator'を見つけることができません そして推奨はes6をターゲットにすることです。それは必要ですか?

http://www.typescriptlang.org/docs/handbook/iterators-and-generators.html

12
Shaun Luttin

SymbolES6の新機能であるため、コンパイラーをそのターゲットにする必要があります。
これを行うには、 コンパイラオプション のターゲットが"es6"であることを指定します。

Symbolの定義は、 lib.es6.d.ts にあります( デフォルトのlib.d.ts にはありません)


編集

その部分を自分でポリフィルすることができます。必要な部分をlib.es6.d.tsファイルからコピーし、それを独自のファイルに入れて参照するだけです。

あなたが投稿したコードに必要なものをコピーしました。それは この遊び場 にあります。
実際に必要なものよりも多い可能性があるので、それを試してみてください。

16
Nitzan Tomer

私がそれを理解するのを助けた何かは、tsconfig.jsonに次の設定を追加することでした:

"lib": [
    "es6",
    "dom"
]

その後、Promise宣言が重複しているという別のエラーが発生しましたが、ポリフィル型の定義を削除して正常に機能しました。 whatwg-fetchは実際にはES6シンボルを必要としないようです。コードは、ES5フォールバックを使用できます: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/1129

9
Ricardo