我有带有ES6目标的TypeScript项目,它使用core-js
来填充ES2017功能,并相应地配置tsconfig.json。
使用Object.entries(...)
和Object.values(...)
时,结果不具备数组方法和属性(map
,forEach
,length
等),它们作为IDE的普通对象出现,因此any[]
类型应该明确地转换为:
虽然Object.keys(...)
的行为应该如此。
同时IDE以某种方式知道'关于Object.entries
和Object.values
的正确类型,它们是按照Ctrl + Shift + P上的TypeScript' lib.es2017.object.d.ts
显示的。但它似乎忽略了检查的类型,因为在当前文件中覆盖ObjectConstructor
解决了这个问题:
interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}
tsc
似乎对打字很好,所以它看起来像IDE特定的问题。
只有在取消选中Use TypeScript service
中的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)仍然存在问题。
答案 0 :(得分:2)
select * from employeemaster where employeename in
('Sachin','Gaurav','Vinay','Shiv','Sandeep','Vaibhav','Prashant')
编译器标记后面的 Typescript 2.3 introduced new support for iterators,或者--downlevel-iteration
中.compilerOptions.downlevelIteration
设置为true
。
请注意,此答案与that one相同,因为它引用相同的编译器标志和类似的症状,即使有人提到编译器的问题,而这个问题与某些IDE集成有关。
答案 1 :(得分:-1)
转到您的tsconfig.json并将目标,库和模块更改为es2017。