メモ:VS Codeで「tsc compilerのバージョンとVS codeほにゃららのバージョンが違う」的な警告が出るときはtypescript.tsdkを設定するか1か月待つ?

A version mismatch between the globally installed tsc compiler (2.0.3) and VS Code's language service (1.8.10) has been detected. This might result in inconsistent compile errors.

という警告が出ました。まだHello Worldをやってるだけなので気にしなくてもいいけど、調べたことをメモ。

これは、VS Codeにはリリース時点で最新のTypescriptがバンドルされるかららしいです。Typescript 2.0はついこないだ出たばっかりなので、先月頭にリリースされたVS Code(バージョン1.5.X)ではまだ1.8が入っています。

code.visualstudio.com

最新のを使うには、settings.jsontypescript.tsdkという項目を設定します。ここに設定するパスは、

$ npm list typescript
C:\Users\user1\AppData\Roaming\npm
└── typescript@2.0.3

で出てきたパスからさらに下のnode_modules\typescript\libを指定します。つまり、この例の場合、C:\Users\user1\AppData\Roaming\npm\node_modules\typescript\libを指定します。注意する点は、Windowsの場合パス区切りは\ですが、settings.jsonに指定するときはエスケープ扱いされるので\\と2つ繰り返さないといけない点です(/でもいける気もするけど試してません)。

// Place your settings in this file to overwrite default and user settings.
{
    "typescript.tsdk": "C:\\Users\\user1\\AppData\\Roaming\\npm\\node_modules\\typescript\\lib"
}

設定が反映されているかは、VS Codeを再起動して、Typescriptのファイルを開いているときに右下を見ればわかります。バージョンが表示されているはずです。

設定前:f:id:yutannihilation:20161002170203p:plain 設定後:f:id:yutannihilation:20161002170212p:plain

...まあでもよく考えれば、たぶん1か月待てば(というかもうすぐ)最新バージョンに追随したVS Codeが出るわけで、待てばいいんじゃないかなーという気もします。

あと、issueを見てると、もうちょっとわかりやすく改善される空気も感じるので、変に設定は入れずそのままにしとくのがいいのかもしれません。よくわからない。

github.com