💨
VS Codeが参照するTypeScriptのバージョンを変更する
TypeScriptを利用している場合に、npm run lint
などではエラーになるけどVS Codeではエラーにならないという経験があるひとは多いと思います。
そういった状況が発生する原因はVS Codeが参照しているTypeScriptのバージョンとnpm run lint
時に参照されるプロジェクトのTypeScriptのバージョンが違っているためです。
異なるTypeScriptのバージョンのプロジェクトを作成
確認するため空のプロジェクトを作成してみましょう。
以下のコマンドでpackage.json
とfoo.ts
を作成します。
npm init -y
npm install typescript@4
touch ./foo.ts
作成されたpackage.json
を確認するとTypeScriptのバージョンは4.9.5
がインストールされたのが確認できます。
package.json
{
"name": "test",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"typescript": "^4.9.5"
}
}
VS Codeが参照するTypeScriptのバージョンを確認する
作成したプロジェクトをVS Codeで開いてfoo.tsを選択、そして右下のTypeSciptの横の{}
をクリックすると先程インストールしたTypeScriptのバージョン4.9.5
ではなく5.6.3
が参照されているのがわかります。
VS Codeが参照するTypeScriptのバージョンを変更する
先程インストールしたTypeScriptのバージョン4.9.5
が参照されるようにするにはTypeScriptバージョンの横にある「バージョンの選択」をクリック
ここで参照するTypeScriptのバージョンが指定できるので、「ワークスペースのバージョンを使用 4.9.5」を選択しましょう。
これでVS Codeが参照するTypeScriptのバージョンを変更することができます。
.vscode/settings.json で指定
他にもTypeScriptのバージョンを指定する方法が以下のドキュメントに記載されています。
例えば.vscode/settings.json に以下の指定を追加することによってVS Codeに参照されるTypeScriptをワークスペースのバージョンにあわせることができます。
.vscode/settings.json
{
"typescript.tsdk": "./node_modules/typescript/lib"
}
Discussion
.vscode/settings.json
に"typescript.tsdk": "node_modules/typescript/lib"
の記述でもローカルのTSを参照できるかも。ありがとうございます。記事に追記しておきました!