gpt4 book ai didi

node.js - TypeScript 无法将 URLSearchParams 识别为可迭代的

转载 作者:行者123 更新时间:2023-12-03 12:17:50 32 4
gpt4 key购买 nike

尝试使用 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.
我正在尝试在一个简单的循环中使用 Node 内置的 URLSearchParams 对象:
for (let [name, value] of searchParams) {
//do stuff
}
Node LTS 版本 12 文档显示 the Symbol.iterator method exists .它适用于 Node REPL。
我在 2017 年的 TypeScript 存储库中发现了一个 closed issue,据说可以解决这个错误。但我也尝试使用 searchParams.entries() 并且验证器没有将其识别为可用属性。所以感觉我的 TypeScript 对 URLSearchParams 的定义非常过时。也许这只是一个包装问题,但我不知道如何进一步调查。 yarn.lock 文件显示了适当的 Node 类型:
"@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==
当我查看 Typescript 定义文件的本地副本时,我看到在 lib.dom.iterable.d.ts 中添加了与 Iterable 相关的属性(如已关闭的 GitHub 问题中所述)。不知何故,这些都被忽略了。
我可以改写我的代码以使用 searchParams.forEach(),但无论如何我想了解出了什么问题。

最佳答案

正如原帖所推测的那样,lib.dom.iterable.d.ts 中的附加定义没有被使用。 tsconfig.json 中项目的 TypeScript 配置必须引用该文件:

"lib": [
"dom",
"dom.iterable",
"es2019"
]
有了这个,TypeScript 现在可以理解 URLSearchParams 和该文件中引用的大约 50 种其他类型的迭代器相关属性。我认为这种分离与 TypeScript 与旧 ECMAScript 风格的向后兼容性有关,但我不知道。

关于node.js - TypeScript 无法将 URLSearchParams 识别为可迭代的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63310897/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com