TypeScriptが盛り上がってきています。昨年2014年4月2日に正式版となる「TypeScript 1.0」がリリースされてから、現在は「TypeScript 1.4」と順調にバージョンアップもなされてきています。それから、ドットインストールでも、プレミアム版となりますが、ついに「TypeScript入門」が2/23に公開されました。ECMAScript 6の正式リリースも6月と差し迫ってきていることなので、そろそろ自分の開発環境でも使ってもよいかなと思い、今回自分のMacにもTypeScriptを導入することにしました。
目次
TypeScriptとは
TypeScriptはCoffeeScrtiptなどと同様に「altJS」と呼ばれるJavaScriptの代替となるプログラミング言語です。JavaScriptの弱い部分を補うように設計されていて、JavaScriptにコンパイルして使用します。Microsoftによって開発が進められています。
特徴としては、”Type”Scriptという名前からもわかるように「型(Type)」にこだわった言語となっていて、現行のJavaScriptにはない「型チェック」や「静的型付け」などに対応しています。それから名前空間をシンプルに記述するためのモジュールやクラスにも対応していたり、次世代JavaScriptのECMAScript6(ES6)を先取りするなど、現状のJavaScriptをさらに強化したものとなっています。
TypeScriptのインストール&基本操作
TypeScriptのインストールは、TypeScriptの公式サイトからダウンロードしてインストロールすることもできますが、今回はNode.jsのパッケージ管理ソフトである「npm」を使ってインストールする方法を説明します。
npmのインストールについては当ブログの以下の記事などを参考にしてください。
TypeScriptをインストールする
TypeScriptを使うディレクトリに移動して、以下のコマンドでインストールします。(「––save-dev」オプションをつけると、package.jsonにプラグインの依存関係を書き込みます。)
「-g」オプションをつけてコマンドを実行すると、システムにインストールされます。
tscコマンドを使う
TypeScriptでコードを書き、「.ts」という拡張子をつけてファイルを保存したら、以下のコマンドで、tsファイルをjsファイルにコンパイルします。同じディレクトリ内に同名の.jsファイルが作られます。
tscコマンドのオプションなどは、そのままtscコマンドを実行するか、「-h」オプションをつけて実行すると表示されます。よく使いそうなコマンドを以下に紹介します。
- -d または ––declaration
- tsファイルから、型定義ファイル(.d.ts)を生成
- ––out
- 複数のtsファイルを連結して単一のjsファイルに出力
- ––outDir
- 出力先のディレクトリを指定
- -w または ––watch
- ファイルの状態を監視して自動的にコンパイル
使い方の詳細や他のコマンドなどについては以下のサイトをご参照ください。
Gruntでtsファイルを自動コンパイル
タスクランナーの「Grunt」を使って開発することも多いと思うので、Gruntを使った自動コンパイルの方法も紹介します。使用するGruntプラグインは以下となります。
- tsファイルのコンパイル ⇒ grunt-typescript
- ファイル状態の監視 ⇒ grunt-contrib-watch
Gruntの環境構築については当ブログの以下の記事を参考にしてください。
Gruntの設定
TypeScriptを使うディレクトリに移動して、以下のコマンドで「grunt-typescript」をインストールします。
さらに以下のコマンドで「grunt-contrib-watch」をインストールします。
tsフォルダを作成し、その中に「function.ts」ファイルを作ります。
「Gruntfile.js」ファイルは以下のように記述します。
以下のコマンドで監視のタスクを実行します。tsファイルに変更があれば自動的にjsファイルへコンパイルを行ってくれるようになります。
gulpでも
Gruntではなくても、gulpでも同様のことが行えます。gulp派の方は以下を参考にしてください。
TypeScriptでjQueryを使う
TypeScriptでJavaScriptライブラリなど「外部ファイル」を使う場合、注意が必要です。外部ファイルで使われている変数や関数には型情報が与えられていないので、コンパイル時にエラーとなってしまいます。
jQueryを普通に書くと
例えば以下のようなjQueryの構文を使ったコードを書いたとします。
するとコンパイル時に「’$’という変数はないよ」というエラーが出てしまいます。
型定義ファイル
「型定義ファイル」を使うと外部ファイルの変数や関数に型情報を与えることができるようになり、TypeScriptのコード内でも外部ファイルを扱えるようになります。
jQueryの型定義ファイルは以下より入手可能です。
型定義ファイルを入手したら、プロジェクト内の任意のフォルダ内にファイルを置き、tsファイルの1行目に以下のように記述し、型定義ファイルを読み込むようにします。
コンパイルすると、以下のようにjQueryの構文を伴ったJavaScriptに問題なく変換されます。
jQueryだけでなく、他の様々なJSライブラリなどの外部ファイルの型定義ファイルは以下に集約されています。
型定義ファイルの管理に「tsd」を使う
上記のように型定義ファイルを手動でひとつひとつ対応するのは面倒なので、「tsd」という型定義ファイルの管理ツールを使うのがオススメです。
tsdはnpmのコマンドでインストールできます。「-g」オプションをつけると、システムにインストールされます。
tsdでは、「tsd.json」という「プロジェクトで型定義ファイルを管理するためのファイル」が必要となります。(プロジェクト内で型定義ファイルを共有するためにも必要なファイルです。)プロジェクトのディレクトリ内で以下のコマンドを実行し、tsd.jsonファイルを作成します。
tsdを使ってjQueryの型定義ファイルをインストールするには、以下のコマンドを実行します。
「typings」ディレクトリが作成され、その中に「jQuery」ディレクトリが作成され、その中に「jquery.d.ts」ファイルが作成されます。また、「typings」ディレクトリの中には同時に「tsd.d.ts」ファイル(インストールした型定義ファイルをまとめたファイル)も作成されます。
tsファイルには、1行目に以下の一文を追加してtsd.d.tsファイルを読み込みようにしておきます。そうすることによって、tsdでインストールした型定義ファイルの全てが常に適用されるようになります。
tsdコマンドについての詳細は以下を参照してください。オプションのつけ方なども詳しく説明されています。
以下はtsdの使い方の参考にさせていただいたブログ記事となります。
- TypeScriptの型定義ファイルを共有しよう! – Qiita
- TypeScriptを書く前に押さえておきたい型定義の扱い。またはtsdを投げ捨てる理由 – Qiita
- Visual StudioとTypeScriptでJavaScriptライブラリを活用する
構文チェックはtslintで
構文チェックも行ってみましょう。TypeScriptの構文チェックには「tslint」というものを使います。
tslintコマンドを使う
tslintはnpmのコマンドでインストールできます。「-g」オプションをつけると、システムにインストールされます。
さっそくtsファイルの構文チェックを行おうと以下のコマンドを実行してみるとホームディレクトリに「tslint.json」ファイルがないよと怒られます。
ホームディレクトリに「tslint.json」ファイルを作ります。
tslint.jsonファイルの中身には以下をコピーして貼り付けてください。
再度プロジェクトのディレクトリ内で、構文チェックを行います。
構文チェックの結果、問題があれば以下のようなエラーが出ます。問題がなければ、特に何も起こりません。
Gruntで自動化
tslintでの構文チェックをGruntで自動化しておくと便利です。「grunt-tslint」というGruntのプラグインがあります。
TypeScriptを使うディレクトリに移動して、以下のコマンドで「grunt-tslint」をインストールします。
「Gruntfile.js」ファイルは以下のように記述します。上記の自動コンパイルのところで使ったGruntfile.jsに追記していきます。今回は新たにプロジェクトディレクトリ内にtslint.jsonファイルを作りました。
以下のコマンドで監視のタスクを実行します。tsファイルに変更があれば自動的にtsファイルの構文チェックを行い、jsファイルへコンパイルを行ってくれるようになります。
構文チェックの結果、問題があれば以下のようなエラーが出ます。問題がなければ、特に何も起こりません。
gulp派の方は以下をお使いください。
以下はtslintの使い方の参考にさせていただいたブログ記事となります。
まとめ
まずはこんなところでTypeScriptを使って開発できるようになると思います。TypeScript自体は、ほぼほぼJavaScriptに若干新しい概念が加わっただけのものなので、JavaScriptが書ければ問題なく書けると思います。最初は型の扱いに慣れていなければ苦戦すると思いますが。Swiftにも似ている部分もあるし、ECMAScript 6もリリース間近でもあるし、今覚えておくといろいろと応用がきくのではないでしょうか。
最後にTypeScriptを勉強するのに役立ちそうなまとめサイトを紹介しておきます。
それからTypeScriptの達人わかめ(@vvakame)さんの本も紹介しておきます。
コメント