Studio+TypeScriptの開発環境について説明しよう。Playground」というサイトのオンライン・サービスを使えばよい。typescript」でインストールできる)。●事前準備TypeScript開発環境を構築するための前提要件は、以下のようになっている。Web(以降、「Express」と略す)をインストールした。次に、TypeScript開発環境(執筆時点では英語版のみ。バージョンは0.8.1.1)をインストールした。これには、下記のページから最新版セットアップ名(執筆時点では「TypeScriptSetup.0.8.1.1.msi」)の横にある[Download]ボタンをクリックして.msiファイルをダウンロードし、それを実行してウィザードの指示に従ってインストールすればよい。2012」(無償)もインストールした方が便利だ(自動コンパイルや、コンパイルの詳細設定、「#region」によるコードの折りたたみ機能などが使えるようになる)。Studio拡張がインストールできないので、残念ながら使えない。2012のIDEを起動して、[新しいプロジェクト]ダイアログを表示する(=Expressの場合はメニューバーの[ファイル]−[新しいプロジェクト]を実行)。TypeScript]テンプレートを選択し、任意の[名前](本稿の例では「FirstTypeScriptHTMLApp」)を入力して[OK]ボタンをクリック(次の画面を参照)。TypeScriptプロジェクトの作成これにより、下記のようなひな型のファイル群が生成される。TypeScriptファイル。ひな型コードがすでに記入されている。TypeScriptファイルのコンパイルにより生成されるJavaScriptファイル。JavaScriptコード(=この例ではapp.jsファイル)を読み込んで実行するHTMLファイル。default.htmlファイル内で読み込まれるスタイル・シート。IDE上では次のように表示される。2012のIDE)TypeScriptコードがどのようなJavaScriptコードにコンパイル/変換されるかを知りたい場合には、この画面例のように.tsファイルと.jsファイルを上下もしくは左右にウィンドウを並べて表示するとよい。【コラム】コンパイル後の.jsファイルの文字化けについて執筆時点のバージョン(0.8.1.1)で、TypeScriptコードに日本語を入力してコンパイルすると、生成されたJavaScriptコードが文字化けしてしまう。これを回避するには、UTF-8(シグネチャ付き)で.tsファイル(=TypeScriptファイル)を保存すればよい。保存]を実行し、そこで表示される[名前を付けてファイルを保存]ダイアログの[上書き保存]ボタンの右にある[▼]をクリックして(表示されるメニューの)[エンコード付きで保存]をクリックする。コードページ65001」を選択して[OK]ボタンをクリックすればよい。それでは、開発環境が整ったので、TypeScriptの主要な言語仕様について説明していこう。冒頭の特徴説明ですでに出てきているが、TypeScriptがオブジェクト指向プログラミングを実現できるように導入したものの中で核となるのが、次の3つの言語機能になる。クラスインターフェイスモジュールC#などのオブジェクト指向言語の知識があれば、クラスやインターフェイスの機能についてはある程度想像が付くだろうが、TypeScript上ではそれらをどのように定義・実装して使用するのかを、実際のコード例で示しながら見ていく。クラスの基礎クラスは「class」というキーワードを使って宣言できる。次のコードは、「Chair」という名前(=識別子)のクラスを宣言している(※クラスの実装方法が概観できるように、クラスの基本的な機能もコメント付きで併せて記述している)。Declaration)文字列は「"」(ダブルクォーテーション)で囲んで表現しているが、JavaScript言語の仕様と同じく「'」(シングルクォーテーション)を使ってもよい。コメントアウトについては、1行内であれば「//」を使って、その記述より後ろをコメントにできる。複数行であれば、「/*」〜「*/」を使って、その間をコメントにできる。このクラスのインスタンス(=クラスが実体化されたオブジェクト)を生成して、そのメンバ変数やメンバ関数を呼び出しているのが、下記のコードである。以下では、上記のクラス宣言の中に実装されている、クラスの基本機能について個別に説明していこう。●コンストラクタによる初期化クラスがインスタンス化される際(具体的には、上記のコード例の「クラスのインスタンスの生成」の部分が実行される際)には、「コンストラクタ(Constructor)」と呼ばれる特殊な関数が自動的に呼び出される。そのコンストラクタ内には、主にクラス・インスタンスを初期化するための処理を記述する。これには、次のコード例のように「constructor」という名前の特殊な関数を定義すればよい。Function)の宣言なお、コンストラクタ関数には戻り値はない。)」の中にあるコンストラクタ関数のパラメータについて説明しよう。price」という記述があるが、この“public”修飾子(modifier)は、「アクセシビリティ(Accessibility)」(=クラス・メンバに外部からのアクセスを許可するかどうか)を示すためのもので、TypeScriptには次の2種類の修飾子が存在する。クラスの外部に公開して、外部からのアクセスを許可する。クラス内部からのアクセスだけを許可し、外部には非公開。コンストラクタ・パラメータの既定のアクセシビリティは「private」となっている。このアクセシビリティの指定は省略可能(option)だが、省略するとprivate修飾子が適用されるため、そのパラメータの変数にはクラス外部からアクセスできなくなる。「コンストラクタのパラメータ変数(いわゆる引数)に、外部からアクセス」と説明したので不思議に思われた方も少なくないと思うが、TypeScriptではコンストラクタ・パラメータ(上記のコード例では「name」と「price」)を“public”で宣言するだけで、後述のインスタンス・メンバ変数を宣言したのと同じ意味になる。インスタンス変数の宣言とコンストラクタ・パラメータを分けて記述する必要がなく、1カ所に効率的に記述できるというわけだ。逆にむしろ両者を分けて記述したい場合には、private修飾子を指定するか、アクセシビリティの指定そのものを省略すればよい。実際にコンストラクタ・パラメータに外部からアクセスしているのが、下記のコード部分である。type)」や、クラス宣言により追加した型である「オブジェクト型」が使える。TypeScriptが提供するプリミティブ型は、下記の5種類である。