TypeScript をプロジェクトに導入する
いま構築している Web アプリケーションの JavaScript を TypeScript に置き換えることにした。
久しぶりに JavaScript を書いてみて思ったのは、
JavaScript はプログラムを書く時間と同じくらい、
プログラムのどこに問題があるのかを調べる時間がながい。
エラー表示が適切ではなかったり、問題がどこにあるのかヒントを得るのが大変だったりする。
もう生で JS を書く時代は終わっていたのかもしれない...。
プロジェクトに TypeScript を導入する
何はともあれ、新しい技術を身につけるときはオフィシャルページを見るのが大事。
技術の変遷が早い領域は、特に情報があっという間に古くなる。
英語を読めない=新しい技術を身につけることができないと、
ほぼ同義になってしまうので英語を読む習慣は必須だ。
TypeScript のホームページはこちら。
https://www.typescriptlang.org/
TypeScript は tsc というコマンドが使えるようになっていれば、
利用できる環境が整っている。
$ tsc -v
Version 2.2.2
でなければ、TypeScript のインストールが必要。
Visual Studio を使わない場合は、TypeScript のインストールには npm を使う。
現時点では、npm は node.js をインストールすると勝手についてくる。
node.js を自分の環境にインストールしよう。
Node.js
https://nodejs.org/ja/
Node.js をインストールしたら、TypeScript の公式ページを参考にして
TypeScript をインストールする。
$ npm install -g typescript
TypeScript の書き方
TypeScript の素晴らしいところは、
既存の JS のファイルをそのまま TypeScript に持ってきても、
とりあえずビルドが通るという点だと思う。
何はともあれ、今自分の持っているプロジェクトを ts ファイル(TypeScript のファイル)
に置き換えて、tsc でビルドしてみよう。
私は普段、JetBrains 製の IDE を使っている。
JetBrains の IDE にはほとんど初期状態で TypeScript をビルドする環境が整っている。
tsconfig.json というファイルがある。
これは重要なファイルで、どの TypeScript のファイルをビルドするのか、
どのような設定でビルドするのかが書いてある。
とりあえずデバッグなども必要なので、開発のための設定として次のように記述してみた。
{ "compilerOptions": { "module": "commonjs", "target": "es5", "outDir": "assets/javascripts/", "sourceMap": true, "inlineSources": true }, "exclude": [ "node_modules" ], "files": [ "ts/core.ts" ] }
JetBrains の IDE は、この tsconfig.json を発見し、この設定に従って自動ビルドをしてくれる。
手動でビルド実行することも可能なので、IDE から設定を見つけ出して頂きたい。
jQuery を使えるようにする
(※ この項は、あまり詳しくない部分なので、説明が正確でない可能性があります)
jQuery を使っている場合、TypeScript 内で構文エラーが発生するかと思う。
DefinitelyTyped という物を導入すると、構文エラーを解決することが出来る。
https://github.com/DefinitelyTyped/DefinitelyTyped
npm から jQuery の定義ファイルをダウンロードするらしい。
TypeScript のプロジェクトルートで、次のコマンドを実行してみる。
$ npm install --save-dev @types/node $ npm install --save-dev @types/jquery
node_modules ディレクトリ以下に、定義ファイルがダウンロードされる。
jQuery を使っていて、構文エラーが発生しているファイルの先頭に、1行、次のようなコメントを記述する。
/// <reference path="../node_modules/@types/jquery/index.d.ts" /> // It's the entry point for your project. $(function () { });
path はダウンロードした定義ファイルの場所を指定すること。
(このあたり、この方法がベストかわからないので、臨機応変に変更して頂ければと思います)
以上で、私の環境で TypeScript の導入が完了した。