プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

VSCodeでJavaScript/Node.jsのコードを補完する

VSCodeJavaScriptを書く時、ちゃんと候補表示&補完してくれるようにした話です。

やり方については情報が錯綜しています。私が調べた感じだと「tsdを使う」→「tsdが非推奨になりtypingsが推奨」→「typingsより便利なnpm install @types/が使えるようになった」という流れっぽいです。

ここではnpm install @types/とtypingsを使う方法を紹介します。まずはnpm install @types/を試して、だめだったらtypingsを試して下さい。


JavaScript標準のCoreライブラリの場合

候補表示&補完できる

JavaScript標準のCoreライブラリはなにもしなくても候補表示&補完ができます。

下の例ではmessageがString型なことを理解してStringクラスのメソッドを候補として表示しています。

f:id:hogehoge666:20210201010956p:plain


Node.jsの標準ライブラリの場合

候補表示&補完されない

Node.jsの標準ライブラリのAPIはデフォルトでは補完されません。

下の例ではhttpライブラリを読み込もうとしていますが、まずrequireが補完されません。

f:id:hogehoge666:20210201011010p:plain

下の例ではhttpライブラリを読み込みましたがhttpライブラリのメソッドが候補として表示されていません。

f:id:hogehoge666:20210201011021p:plain

この状態でコーディングするのは初学者には厳しいです。補完できるようにしましょう。

型定義ファイルの取得

npm install @typesを使う方式を紹介します。もしうまくいかない場合は後述するtypingsの方法を試して下さい。

npm install @types/<ライブラリ名>でそのライブラリの型定義ファイルを取得できます。VSCodeはその型定義ファイルを参照してコードを補完してくれます。

早速、Node.jsの型定義ファイルを取得しましょう。

npm install --save-dev @types/node

型定義ファイルは最終成果物の動作には不要なものなので--save-devオプションでローカルに開発用モジュールとしていれています。

これでnode_moduleディレクトリに型定義ファイルが入りました。これだけでOKです。

動作確認

requireが候補として表示されるようになりました。

f:id:hogehoge666:20210201011034p:plain

httpライブラリのメソッドが表示されるようになりました。

f:id:hogehoge666:20210201011043p:plain


Node.jsの外部ライブラリ(Express.js)の場合

候補表示&補完されない

Express.jsを例に話を進めます。まずはExpress.jsをインストールします。

npm install express

Express.jsを読み込んで使おうとしましたがExpress.jsのメソッドが候補に表示されません。ここではgetが表示されることを期待していました。

f:id:hogehoge666:20210201011109p:plain

型定義ファイルの取得

Node.jsのときと同じ方法でExpress.jsの型定義ファイルを取得します。

npm install --save-dev @types/express

動作確認

候補が表示されるようになりました。

f:id:hogehoge666:20210201011123p:plain

簡単ですね。


typingsを使った例

typingsを使って型定義ファイルを取得することもできます。もしnpm install @typesでだめだった場合はこちらを試してみてください。

Node.jsの標準ライブラリを例にとって話を進めます。

typingsをインストール

typingsがまだインストールされていない場合はインストールします。

npm install -g typings

globalでよいと思います。

型定義ファイルの取得

以下のコマンドでNode.jsの型定義ファイルを取得します。

typings install dt~node --global --save

取得した型定義ファイルはtypingsというディレクトリに配置されます。

VSCodeを設定

この方法ではVSCodeを設定する必要があります。

プロジェクトフォルダの最上位階層にjsconfig.jsonというファイルを作成し、以下の内容をコピペします。

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs"
    }
}

動作確認

補完できるようになりました。

f:id:hogehoge666:20210201013258p:plain


感想

補完できるようになりました。

JavaScriptを敬遠していた理由の一つが補完が弱いことでしたがこれで学習のハードルが一つ下がりました。