Tôi có dự án TypeScript với mục tiêu ES6, nó sử dụng các tính năng core-js
đến polyfill ES2017 và tsconfig.json được định cấu hình tương ứng.Object.entries() và Object.values () không được nhập là mảng trong WebStorm/PhpStorm
Khi Object.entries(...)
và Object.values(...)
được sử dụng, kết quả không có phương pháp mảng và tài sản (map
, forEach
, length
, vv), chúng xuất hiện như các đối tượng đơn giản để IDE, vì vậy any[]
loại nên được đúc một cách rõ ràng:
Trong khi Object.keys(...)
hoạt động như bình thường.
Đồng thời IDE bằng cách nào đó 'biết' về các loại thích hợp cho Object.entries
và Object.values
, chúng được hiển thị theo loại lib.es2017.object.d.ts
của TypeScript trên Ctrl + Shift + P. Nhưng nó dường như bỏ qua các loại để kiểm tra, bởi vì trọng ObjectConstructor
trong tập tin hiện tại giải quyết vấn đề:
interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}
tsc
có vẻ là tốt với typings, vì vậy nó trông giống như vấn đề IDE cụ thể.
Điều này chỉ xảy ra khi không được chọn Use TypeScript service
trong Languages & Frameworks > TypeScript
. Mọi thứ trở nên bình thường khi dịch vụ TypeScript được kích hoạt (nó bị vô hiệu do cố ý vì có vấn đề với dịch vụ TS trước đó).
Đây là 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"
]
}
này có nghĩa là gì? Đã thiết lập của tôi đi sai ở đâu đó?
Sự cố vẫn tiếp diễn với TypeScript 2.1.5 và IDE mới nhất (EAP 2017.1).
chắc chắn sẽ cập nhật lên TypeScript mới nhất. Phiên bản bạn đang sử dụng đã cũ hơn 1 tuổi – PierreDuc
Vâng, câu hỏi cũng được một tuổi. Vấn đề biến mất cho tôi tại một số điểm nhưng tôi không bao giờ tìm ra nếu điều này là do TS hoặc IDE cập nhật. – estus
Tuyệt vời, điều đó sẽ dạy tôi không đọc đúng cách. Tôi rất vui vì vấn đề của bạn đã được giải quyết và tôi hy vọng một ngày nào đó bạn sẽ tìm thấy câu trả lời cho những gì đã xảy ra. Cho đến lúc đó, chúng ta đang ở trong bóng tối – PierreDuc