gis*_*d22 3 node.js typescript
尝试使用 yarn & webpack 构建一个小型 TypeScript 项目时出现以下错误:
TS2549: Type 'URLSearchParams' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.
Run Code Online (Sandbox Code Playgroud)
我正在尝试URLSearchParams在一个简单的循环中使用 Node 内置对象:
TS2549: Type 'URLSearchParams' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.
Run Code Online (Sandbox Code Playgroud)
Node LTS 版本 12 文档显示Symbol.iterator 方法存在。它适用于 Node REPL。
我在 2017 年的 TypeScript 存储库中发现了一个已解决的问题,据说可以解决此错误。但我也尝试使用searchParams.entries(),但验证器未将其识别为可用属性。所以感觉我的 TypeScript 对 URLSearchParams 的定义非常过时。也许这只是一个包装问题,但我不知道如何进一步调查。该yarn.lock文件显示了适当的节点类型:
"@types/node@^12":
version "12.12.53"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.53.tgz#be0d375933c3d15ef2380dafb3b0350ea7021129"
integrity sha512-51MYTDTyCziHb70wtGNFRwB4l+5JNvdqzFSkbDvpbftEgVUBEE+T5f7pROhWMp/fxp07oNIEQZd5bbfAH22ohQ==
typescript@^3.9.7:
version "3.9.7"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
Run Code Online (Sandbox Code Playgroud)
当我查看 Typescript 定义文件的本地副本时,我看到添加了与 Iterable 相关的属性lib.dom.iterable.d.ts(如已关闭的 GitHub 问题中所述)。不知何故,这些都被忽略了。
我可以改写我的代码来使用searchParams.forEach(),但我想知道到底出了什么问题。
正如原始帖子所推测的那样,lib.dom.iterable.d.ts没有使用中的附加定义。项目的 TypeScript 配置tsconfig.json必须引用该文件:
"lib": [
"dom",
"dom.iterable",
"es2019"
]
Run Code Online (Sandbox Code Playgroud)
有了这个,TypeScript 现在可以理解 URLSearchParams 和该文件中引用的大约 50 种其他类型的迭代器相关属性。我认为这种分离与 TypeScript 与旧 ECMAScript 风格的向后兼容性有关,但我不知道。
| 归档时间: |
|
| 查看次数: |
1601 次 |
| 最近记录: |