2017-02-01 6 views
5

私はES6ターゲットを持つTypeScriptプロジェクトを持っていますが、core-jsを使用してES2017の機能をポリフィルし、それに応じてtsconfig.jsonが構成されます。 Object.entries(...)Object.values(...)が使用される場合WebStorm/PhpStormのObject.entries()とObject.values()は配列として型付けされていません

、結果は配列のメソッドとプロパティ(mapforEachlength、など)を持っていない、彼らはIDEにプレーンなオブジェクトとして表示されますので、any[]タイプが明示的にキャストする必要があります。

Object.keys(...)のように動作します。

IDEは何とかObject.entriesObject.valuesのための適切なタイプについて「知っている」それと同時に、それらは活字体のlib.es2017.object.d.tsのCtrl + + Pをシフトにに従って表示されます。しかし、現在のファイルにObjectConstructorをオーバーライドしても問題が解決しているため、それは、検査のための型を無視するようだ:それはIDE固有の問題のように見えるよう

interface ObjectConstructor { 
    values(o: any): any[]; 
    entries(o: any): [string, any][]; 
} 

tsc、タイピングと罰金のようです。

これは、Languages & Frameworks > TypeScriptUse TypeScript serviceがオフの場合にのみ発生します。 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

最新のTypeScriptに間違いなく更新されます。あなたが使用しているバージョンは1歳以上です – PierreDuc

+0

まあ、質問も一歳です。ある時点で問題は消えてしまったが、これがTSやIDEのアップデートによるものかどうかは決して分からなかった。 – estus

+0

素晴らしいです、それは私に正しく読まないよう教えてくれます。私はあなたの問題が解決したことをとてもうれしく思っています。いつかあなたが何が間違っていたのかの答えを見つけることを願っています。それまでは、私たちは暗闇の中にいます – PierreDuc

答えて

2

Typescript 2.3 introduced new support for iterators--downlevel-iterationコンパイラフラグの後ろに、またはあなたのtsconfig.jsontrue.compilerOptions.downlevelIterationを設定することもできます。

この回答は、コンパイラの問題を参照していても、同じIDEコンパイラフラグと同様の現象を参照しているため、that oneと同じですので注意してください。

関連する問題