この動画はメンバー限定動画です
全ての講座が
月額990円で学び放題
ここまで作成したクラスは、次のようにインスタンスを定義した後で、商品の名前や在庫の数を設定しなければなりませんでした。
let peach = new Item();
peach.name = "もも";
peach.stock = 5;
これをもっとスマートに行いたい場合、インスタンスの宣言と同時にこれらの値を設定することができます。これには「コンストラクタ」というしくみを使います。コンストラクタには「constructor()」という特別な宣言を使います。
次のように追加しましょう。
constructor(name: string, stock: number) {
this.name = name;
this.stock = stock;
}
メソッドの定義に似ていますが、戻り値がないため、戻り値の型は指定する必要がありません。関数やメソッドの定義では、戻り値がないときに「: void」という型が利用できると紹介しましたが、コンストラクタの場合はこれも書く必要がなく、書いてしまうとエラーになります。
constructor(...): void {
コンストラクタにはパラメータを定義することができます。そして、このパラメータを使って必要な初期化の処理を行っていきます。
コンストラクタを指定しよう
こうしてコンストラクタを定義すると、インスタンスを作るときに次のようにパラメータを指定して宣言するようになります。
let peach = new Item("もも", -3);
これによって、個別にプロパティを操作する必要がなくなります。
コンストラクタ内ではセッターを使おう
コンストラクタの中でプロパティを操作する際は、直接プロパティを扱わずにセッターを使うようにしましょう。
constructor(name: string, stock: number) {
this.name = name; // × this._name = name;
this.stock = stock; // × this._stock = stock;
}
このようにセッターを通じてプロパティの値を設定しないと、コンストラクタのパラメータとして正しくない値を設定することで、プロパティに不正な値を代入することができるようになってしまいます。
let peach = new Item("もも", -3); // 在庫数が負の数