私はES6ターゲットを持つTypeScriptプロジェクトを持っていますが、core-js
を使用してES2017の機能をポリフィルし、それに応じてtsconfig.jsonが構成されます。 Object.entries(...)
とObject.values(...)
が使用される場合WebStorm/PhpStormのObject.entries()とObject.values()は配列として型付けされていません
、結果は配列のメソッドとプロパティ(map
、forEach
、length
、など)を持っていない、彼らはIDEにプレーンなオブジェクトとして表示されますので、any[]
タイプが明示的にキャストする必要があります。
Object.keys(...)
のように動作します。
IDEは何とかObject.entries
とObject.values
のための適切なタイプについて「知っている」それと同時に、それらは活字体のlib.es2017.object.d.ts
のCtrl + + Pをシフトにに従って表示されます。しかし、現在のファイルにObjectConstructor
をオーバーライドしても問題が解決しているため、それは、検査のための型を無視するようだ:それはIDE固有の問題のように見えるよう
interface ObjectConstructor {
values(o: any): any[];
entries(o: any): [string, any][];
}
tsc
、タイピングと罰金のようです。
これは、Languages & Frameworks > TypeScript
のUse 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)ではこの問題は解決されません。
最新のTypeScriptに間違いなく更新されます。あなたが使用しているバージョンは1歳以上です – PierreDuc
まあ、質問も一歳です。ある時点で問題は消えてしまったが、これがTSやIDEのアップデートによるものかどうかは決して分からなかった。 – estus
素晴らしいです、それは私に正しく読まないよう教えてくれます。私はあなたの問題が解決したことをとてもうれしく思っています。いつかあなたが何が間違っていたのかの答えを見つけることを願っています。それまでは、私たちは暗闇の中にいます – PierreDuc