找不到名字'符号'在whatwg-fetch类型声明文件中

时间:2016-09-01 20:03:16

标签: typescript typescript2.0

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

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 Cannot find name 'IterableIterator',建议定位到es6。这需要吗?

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

2 个答案:

答案 0 :(得分:16)

SymbolES6的新用户,因此您需要将编译器定位到此。
为此,请指定the compiler options中的目标为"es6"

Symbol的定义可以在the lib.es6.d.ts中找到(虽然在default lib.d.ts中遗漏了

修改

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

我复制了您发布的代码所需的内容,它位于this playground 它可能有更多的实际需要,所以玩弄它。

答案 1 :(得分:9)

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

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

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