2017-02-01 18 views
5

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(...)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.entriesObject.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).

+0

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

+0

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

+0

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

Trả lời

2

Typescript 2.3 introduced new support for iterators đằng sau --downlevel-iteration biên dịch cờ, hoặc bằng cách đặt .compilerOptions.downlevelIteration để true trong tsconfig.json của bạn. Lưu ý rằng câu trả lời này giống như that one vì nó đề cập đến cùng một cờ trình biên dịch và các triệu chứng tương tự, mặc dù một đề cập đến các vấn đề với trình biên dịch và điều này là về một số tích hợp IDE.

Các vấn đề liên quan