Mam projekt TypeScript z celem ES6, używa on funkcji core-js
do funkcji polyfill ES2017, a tsconfig.json jest odpowiednio skonfigurowany.Object.entries() i Object.values () nie są wpisywane jako tablice w WebStorm/PhpStorm
Gdy stosuje Object.entries(...)
i Object.values(...)
wyniki nie mają sposoby tablicy i właściwości (map
, forEach
, length
itp), pojawiają się one jako zwykły obiektów IDE tak any[]
typu powinny być odlewane wyraźnie:
Podczas gdy Object.keys(...)
zachowuje się tak, jak powinien.
W tym samym czasie IDE w jakiś sposób "wie" o odpowiednich typach dla Object.entries
i Object.values
, są one pokazane zgodnie z Type30's lib.es2017.object.d.ts
na Ctrl + Shift + P. Ale wydaje się ignorować typy dla kontroli, ponieważ nadrzędnym ObjectConstructor
w bieżącym pliku rozwiązuje problem:
interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}
tsc
wydaje się być w porządku z typowania, więc wygląda na to IDE konkretnego problemu.
Dzieje się tak tylko wtedy, gdy odznaczono Use TypeScript service
w Languages & Frameworks > TypeScript
. Wszystko jest normalne, gdy włączona jest usługa TypeScript (jest celowo wyłączana, ponieważ wcześniej występowały problemy z usługą TS).
Oto 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"
]
}
Co to oznacza? Czy moja konfiguracja poszła gdzieś źle?
Problem nadal występuje w języku TypeScript 2.1.5 i najnowszym IDE (EAP 2017.1).
zdecydowanie zaktualizowano do najnowszego TypeScript. Wersja, której używasz, ma ponad rok. – PierreDuc
Cóż, pytanie też ma rok. Problem zniknął dla mnie w pewnym momencie, ale nigdy nie doszedłem do wniosku, czy było to spowodowane aktualizacją TS lub IDE. – estus
Niesamowite, to nauczy mnie nie czytać poprawnie. Cieszę się, że Twój problem został rozwiązany i mam nadzieję, że pewnego dnia znajdziesz odpowiedź na pytanie, co było nie tak. Do tego czasu jesteśmy w ciemności – PierreDuc