gpt4 book ai didi

typescript - Object.entries() 和 Object.values() 在 WebStorm/PhpStorm 中未被类型化为数组

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:40 25 4
gpt4 key购买 nike

我有一个带有 ES6 目标的 TypeScript 项目,它使用 core-js 来填充 ES2017 特性,并相应地配置了 tsconfig.json。

当使用 Object.entries(...)Object.values(...) 时,结果没有数组方法和属性 (mapforEachlength 等),它们在 IDE 中显示为普通对象,因此 any[] 类型应该显式转换:

虽然 Object.keys(...) 表现得像它应该的那样。

同时 IDE 以某种方式“知道”Object.entriesObject.values 的正确类型,它们根据 TypeScript 的 lib 显示.es2017.object.d.ts 按 Ctrl+Shift+P。但它似乎忽略了检查的类型,因为覆盖当前文件中的 ObjectConstructor 解决了问题:

interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}

tsc 似乎可以正常输入,所以它看起来像是特定于 IDE 的问题。

只有当 Languages & Frameworks > TypeScript 中的 Use TypeScript service 未选中时才会发生这种情况。 启用 TypeScript 服务后一切正常(它有意禁用,因为之前 TS 服务存在问题)。

这里是 tsconfig.json:

{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"alwaysStrict": true,
"strictNullChecks": false,
"baseUrl": "./src",
"paths": [],
"lib": [
"es2016",
"es2017.object"
]
},
"exclude": [
"node_modules"
]
}

这是什么意思?我的设置是不是哪里出了问题?

问题仍然存在于 TypeScript 2.1.5 和最新的 IDE (EAP 2017.1)。

最佳答案

Typescript 2.3 introduced new support for iterators--downlevel-iteration后面编译器标志,或通过设置 .compilerOptions.downlevelIterationtrue在你的tsconfig.json .

请注意,此答案与 that one 相同因为它指的是相同的编译器标志和类似的症状,即使其中一个指的是编译器的问题,而这个是关于某些 IDE 集成的。

关于typescript - Object.entries() 和 Object.values() 在 WebStorm/PhpStorm 中未被类型化为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983906/

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