この動画はメンバー限定動画です
全ての講座が
月額990円で学び放題
前のレッスンで定義した「クラス」には、「メソッド」を定義することもできます。関数の定義と似ていますが、オブジェクトごとに分類することができるようになるため、使いやすくなります。まずは、前節で定義したクラスを確認しておきましょう。
class Item {
name: string = '';
stock: number = 0;
}
メソッドを実装しよう
ではここに、商品を購入するための「buy」というメソッドを定義してみましょう。このメソッドを呼び出すと、次のようなことができるようにします。
- 購入する数をパラメータで指定します
- stockプロパティが購入する数よりも多いか(=在庫があるか)を確認します
- 在庫があれば、在庫から減らしてtrueを返します
- 在庫がなければ、falseを返します
それでは実装してみましょう。次のように追加します。
class Item {
...
buy(count: number): boolean {
if (count <= this.stock) {
this.stock -= count;
return true;
} else {
return false;
}
}
メソッドの定義は、関数の定義とほとんど同様です。
メソッド名(パラメーター): 戻り値の型 {
メソッドの処理
return 戻り値
}
すると、次のようにインスタンスで利用することができます。
let peach = new Item();
peach.name = "もも";
peach.stock = 3;
console.log(peach.name);
console.log(peach.buy(2)); // true
この場合は、最初に在庫(stock)に3を代入しているため、buyメソッドのパラメーターに2を指定しても在庫数の方が多く、これは購入することができます。
![](https://tomosta.jp/wp-content/uploads/2024/05/image-114-1024x154.png)
在庫数よりも多い数を購入しようとすると、falseになります。
console.log(peach.buy(6)); // false
![](https://tomosta.jp/wp-content/uploads/2024/05/image-115.png)
また、続けて購入することで在庫量を超過してしまうと、その時点でもfalseになります。
console.log(peach.buy(3)); // true
console.log(peach.buy(4)); // false
プロパティを参照しよう
さて、ここでメソッド内の処理についてみていきましょう。if構文などについてはすでに解説しました。次の部分に注目します。
if (this.stock > count) {
「stock」は、定義しているプロパティですが、プロパティの内容を参照する場合は「this.」というものを先頭に付加する必要があります。これは、変数との見分けをつけるためのもので、自分のクラスの中で定義されたプロパティを参照する時には必ず必要です。忘れないようにしましょう。