我有带有 ES6 目标的 TypeScript 项目,它用于core-js
填充 ES2017 功能,并相应地配置了 tsconfig.json。
使用Object.entries(...)
和Object.values(...)
时,结果没有数组方法和属性(map
、forEach
、length
等),它们在 IDE 中显示为普通对象,因此any[]
应显式转换类型:
虽然Object.keys(...)
表现得像它应该的那样。
同时 IDE 以某种方式“知道” and 的正确类型Object.entries
,Object.values
它们按照 TypeScriptlib.es2017.object.d.ts
在 Ctrl+Shift+P 上的显示。但它似乎忽略了检查的类型,因为ObjectConstructor
在当前文件中覆盖可以解决问题:
interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}
tsc
打字似乎很好,所以它看起来像 IDE 特定的问题。
仅当未选中Use TypeScript service
in时才会发生这种情况。Languages & Frameworks > TypeScript
启用 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) 仍然存在此问题。