在whatwg-fetch类型声明文件中找不到名称'Symbol'

Sha*_*tin 12 typescript typescript2.0

d.tsdt~whatwg-fetch中的文件包含以下声明.

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

我们试图创建一个变通方法界面但没有成功.以下工作均不适用.会是什么?

interface Symbol {}

interface Symbol<T> {}

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

interface Symbol<T> {
   iterator: IterableIterator<[string, string]> 
}
Run Code Online (Sandbox Code Playgroud)

编辑

我们已经看到Typescript找不到名称'IterableIterator',建议定位es6.这需要吗?

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

Nit*_*mer 16

Symbol是新的ES6,因此你需要将编译器定位到那个.
要做到这一点指定目标编译器选项"es6".

Symbol可以在lib.es6.d.ts中找到定义(虽然在默认的lib.d.ts中缺少它)


编辑

您可以自己填充该部分,只需从lib.es6.d.ts文件中复制所需的部分并将其放在您自己的文件中并引用它.

我复制了你发布的代码所需要的东西,它就在这个游乐场里.
它可能有更多的实际需要,所以玩弄它.


Ric*_*rdo 9

帮助我解决问题的是将以下设置添加到tsconfig.json:

"lib": [
    "es6",
    "dom"
]
Run Code Online (Sandbox Code Playgroud)

之后,我得到了重复的Promise声明的另一个错误,但我刚刚删除了polyfill类型定义并且工作正常.看起来whatwg-fetch并不真正需要ES6符号,代码可以使用ES5后备:https: //github.com/DefinitelyTyped/DefinitelyTyped/issues/11290