第12回 クラスの利用:TypeScriptで学ぶJavaScript入門(4/6 ページ)
プログラミング初心者向けのTypeScript入門連載。最終回はいよいよクラスの利用。クラスの基本や重要な考え方を詳しく解説する。TypeScriptでプログラミングへの理解を一歩深めよう。連載完結。
コンストラクター
コンストラクターとは、インスタンスの作成時に自動的に実行されるメソッドで、初期値の設定などに使われる。ここでは、猫の名前を表すnameプロパティを追加し、初期値として"名なし"を設定してみよう。コンストラクターを定義するには、constructorという名前の関数を書けばよい。
class Cat {
length: number;
weight: number;
name: string;
constructor() { // (1)
this.name = "名なし";
}
}
var myCat = new Cat(); // (2)
alert("名前は" + myCat.name + "です"); // (3)
window.close();
(1)がコンストラクターの定義となる。関数名がconstructorとなっているだけで、特に複雑な書き方が要求されるわけではない。(2)でCatクラスのインスタンスを作成すると、自動的にコンストラクターが実行されるので、名前(nameプロパティ)に値を設定しなくても、(3)でそのまま名前を表示できる。実行例は次の項で併せて見ることにしよう。
コンストラクターのオーバーロード
コンストラクターをオーバーロードすれば、インスタンス作成時の引数の指定により、動作を変えることができる。例えば、インスタンスの作成時に名前を指定した場合には、その名前が設定されるようにしてみよう。
class Cat {
length: number;
weight: number;
name: string;
constructor();
constructor(s: string);
constructor(s?: string) {
if (typeof (s) == "string") {
this.name = s;
} else {
this.name = "名なし";
}
}
}
var myCat = new Cat("タマ"); // (1)
var yourCat = new Cat(); // (2)
alert("私の猫の名前は" + myCat.name + "で、あなたの猫の名前は" + yourCat.name + "です");
window.close();
オーバーロードの方法はこれまでに見た通りである。(1)では"タマ"という名前を引数に指定してCatクラスのインスタンスを作成しているので、nameプロパティに"タマ"が代入される。一方、(2)では引数を指定せずにCatクラスのインスタンスを作成しているので、nameプロパティに"名なし"が代入される。
プログラムの実行結果は以下のようになる。
Copyright© Digital Advantage Corp. All Rights Reserved.