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
答案 0 :(得分:16)
Symbol
是ES6
的新用户,因此您需要将编译器定位到此。
为此,请指定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