TypeScriptは静的型付けやクラスベースのオブジェクト指向を実現しているのが特長で、JavaScriptの大規模なアプリケーション開発などで便利なプログラミング言語です。
今回はこのTypeScriptを試してみたいと思います。
使い方
まずはTypeScriptをインストールします。
Node.jsを使用するので、事前にインストールしておいてください。
コマンドプロンプトを起動し、TypeScriptをインストールします。
npm install -g typescript
TypeScriptのインストールが完了したら、作業用のディレクトリを作成します。
作成後、そのディレクトリへ移動します。
cd ディレクトリ名
作業ディレクトリにTypeScriptのファイルを作成します。
今回はhelloworld.tsというファイルを作成しました。
helloworld.tsで以下のように記述します。
helloworld.ts
function greeter(person) {
return "Hello, " + person;
}
var user = 'Kato';
alert(greeter(user));
helloworld.tsを保存後、コマンドプロンプトでコンパイルを実行します。
tsc helloworld.ts
作業ディレクトリ内にhelloworld.jsというファイルが生成されたら成功です。
以下のような中身のファイルが生成されました。
helloworld.js
function greeter(person) {
return "Hello, " + person;
}
var user = 'Kato';
alert(greeter(user));
型の定義
helloworld.ts内の関数の引数に型を定義してみます。
greeter()の引数personの後に「: string」を追加します。
helloworld.ts
function greeter(person: string) {
return "Hello, " + person;
}
var user = 'Kato';
alert(greeter(user));
引数にstring型を指定しました。
この状態でコンパイルを実行すると、引数の値は’Kato’で文字列なので、先ほどと同様の内容が生成されます。
string型を指定のデモページ
次に引数の値をnumber型に変更してみます。
helloworld.ts
function greeter(person: string) {
return "Hello, " + person;
}
var user = 123;
alert(greeter(user));
この状態でコンパイルを実行すると、以下のようなエラーが表示されました。
helloworld.ts(7,15): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
これは関数の引数にstring型を定義しているのに対して、実際の引数の値がnumber型であるためです。
エラーは表示されていますが、ファイルの生成自体は行われているので注意が必要です。
number型を指定のデモページ
interface
先ほどのサンプルをさらに変更して、interfaceを利用してみます。
helloworld.ts
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = { firstName: "Megumi", lastName: "Kato" };
alert(greeter(user));
コンパイルを実行すると、以下のように生成されました。
helloworld.js
function greeter(person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = { firstName: "Megumi", lastName: "Kato" };
alert(greeter(user));
class
classを利用してみます。
helloworld.ts
class Student {
profile: string;
constructor(public firstName, public lastName, public age) {
this.profile = firstName + " " + lastName + " (" + age + ")";
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Megumi", "Kato", 17);
alert(greeter(user));
alert(user.profile);
helloworld.js
var Student = (function () {
function Student(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.profile = firstName + " " + lastName + " (" + age + ")";
}
return Student;
}());
function greeter(person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Megumi", "Kato", 17);
alert(greeter(user));
alert(user.profile);
【参考サイト】
- TypeScript – JavaScript that scales.
- 「静的型付けが出来るJavaScriptの上位言語」を触ってみよう。パート1 – TypeScript #1 – hounobouno
コメントが承認されるまで時間がかかります。