TypeScriptでプロパティ・メソッドを定義する方法を徹底解説!初心者向けオブジェクト指向入門
生徒
「先生、TypeScriptでクラスを作るときに、プロパティとかメソッドってよく出てきますけど、どうやって定義するんですか?」
先生
「良いところに気がつきましたね。クラスの中に変数のように持たせるものをプロパティ、動作や処理をまとめたものをメソッドと呼びます。TypeScriptではとても簡単に書けるんですよ。」
生徒
「なるほど!でもプログラミング初心者だと、ちょっとイメージがつきにくいです…。具体的に教えてください!」
先生
「それでは、プロパティとメソッドの基本的な使い方を一緒に見ていきましょう!」
1. プロパティとは?
TypeScriptにおけるプロパティとは、クラスが持つ「情報」や「状態」を保存するための変数のことです。たとえば、人を表すクラスなら「名前」や「年齢」などがプロパティにあたります。プロパティはクラスの内部に定義して、オブジェクトごとに値を持たせることができます。
例えるなら、クラスは「設計図」で、プロパティはその設計図に書かれている部品や属性のようなものです。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
const student = new Person("太郎", 20);
console.log(student.name);
console.log(student.age);
太郎
20
このように、nameとageがプロパティです。this.nameやthis.ageのように書くことで、クラスの中で自分自身の情報を扱えるようになります。
2. メソッドとは?
次にメソッドについて解説します。メソッドとは、クラスに所属する「処理」や「動作」を表す関数のことです。プロパティが「情報」を持つのに対して、メソッドは「行動」を表します。
たとえば、人クラスに「自己紹介をする」という機能を持たせたいとき、メソッドを使います。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
introduce(): void {
console.log(`私の名前は${this.name}です。年齢は${this.age}歳です。`);
}
}
const student = new Person("花子", 22);
student.introduce();
私の名前は花子です。年齢は22歳です。
この例ではintroduceがメソッドです。呼び出すと、プロパティの値を利用して自己紹介をしてくれます。
3. プロパティとメソッドを組み合わせる
プロパティとメソッドは組み合わせることで、クラスの機能をより豊かに表現できます。例えば、動物クラスを作り、「名前」というプロパティと「鳴く」というメソッドを定義してみましょう。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
speak(): void {
console.log(`${this.name}が鳴きました!`);
}
}
const dog = new Animal("ポチ");
dog.speak();
ポチが鳴きました!
このように、プロパティnameで動物の名前を持ち、メソッドspeakで動作を定義しています。クラスは「情報」と「行動」をひとまとめにできる仕組みです。
4. アクセス修飾子でプロパティやメソッドを管理
TypeScriptでは、プロパティやメソッドにアクセス修飾子を付けて、外部からアクセスできる範囲をコントロールできます。代表的なものは以下の3つです。
public(デフォルト):どこからでもアクセス可能private:クラスの内部からしかアクセスできないprotected:クラス自身と継承したクラスからのみアクセスできる
class BankAccount {
public owner: string;
private balance: number;
constructor(owner: string, balance: number) {
this.owner = owner;
this.balance = balance;
}
deposit(amount: number): void {
this.balance += amount;
console.log(`${amount}円を入金しました。`);
}
getBalance(): number {
return this.balance;
}
}
const account = new BankAccount("佐藤", 1000);
account.deposit(500);
console.log(account.getBalance());
500円を入金しました。
1500
ここでは、ownerは公開されているので外から読めますが、balanceはprivateのため直接アクセスできません。その代わりにgetBalanceメソッドを使って残高を取得する仕組みにしています。
5. ポイント整理
プロパティは「情報」を持ち、メソッドは「行動」を定義する役割があります。両方をうまく組み合わせることで、現実世界のものごとをプログラムの中に表現できるのがオブジェクト指向の考え方です。
TypeScriptでクラスを学ぶことで、ゲームのキャラクターやアプリのユーザー情報、商品管理など、身近なシステムを作る基礎をしっかりと身につけられます。
まとめ
TypeScriptでクラスを扱うときに欠かせない「プロパティ」と「メソッド」について、ここまで具体例を交えながら順を追って見てきました。改めて振り返ると、プロパティはクラスが持つ特徴や状態を表す大切な要素であり、メソッドはそのクラスがどのように振る舞うかを示す動作のかたまりです。たとえば学校の生徒を表現するなら「名前」「年齢」などがプロパティで、「挨拶をする」「自己紹介をする」といった振る舞いがメソッドに該当します。 プロパティとメソッドの組み合わせは、オブジェクト指向の中心となる考え方で、現実世界の物体や概念をプログラムの中に落とし込むための基礎でもあります。TypeScriptは型が明確に扱えるため、クラスの構造がとても理解しやすく、プロパティやメソッドを用いた設計も自然な形で身につけられます。またアクセス修飾子を使うことで、外部から隠したい情報を守ったり、必要な部分だけ公開したりと、システムの安全性や保守性を高める仕組みを簡単に取り入れることができます。 さらに、複雑な処理をひとまとまりのメソッドとして整理していくことで、コード全体の見通しがよくなり、後から読み返したときにも意図が伝わりやすい構造になります。オブジェクト指向の基礎力は、ゲーム開発、業務アプリケーション、Webサービスのユーザー管理など幅広い分野で役立つ重要なスキルです。TypeScriptのクラス構文は比較的やさしく書けるので、初心者の方でも自然と仕組みになじみやすいのも大きな特徴と言えるでしょう。 ここでは、学んできた内容を整理しつつ、追加のサンプルプログラムを紹介して、理解をさらに深められるようにしてみます。
■ プロパティとメソッドを活用した実践サンプル
下記のサンプルコードは、キャラクターを表すクラスに複数のプロパティとメソッドを定義し、状態の変化をメソッドによって管理する例です。現実的な場面でもよく使われる要素がまとめられています。
class Character {
name: string;
hp: number;
private level: number;
constructor(name: string, hp: number) {
this.name = name;
this.hp = hp;
this.level = 1;
}
attack(target: Character): void {
console.log(`${this.name}が${target.name}を攻撃した!`);
target.hp -= 10;
console.log(`${target.name}のHPは${target.hp}になった。`);
}
levelUp(): void {
this.level++;
this.hp += 20;
console.log(`${this.name}はレベルアップした! レベル:${this.level} HP:${this.hp}`);
}
getStatus(): void {
console.log(`名前:${this.name} HP:${this.hp} レベル:${this.level}`);
}
}
const hero = new Character("ヒーロー", 100);
const monster = new Character("モンスター", 60);
hero.attack(monster);
hero.levelUp();
hero.getStatus();
このコードでは、nameとhpがプロパティであり、attack、levelUp、getStatusがメソッドです。内部のレベルはprivateで守られており、外部から直接変更できないようにしています。このようにプロパティとメソッドを適切に組み合わせることで、クラスは状態と振る舞いを自然に統合し、複雑な挙動を管理しやすくします。
TypeScriptのクラス構文を使ったプログラミングは、アプリケーション内の情報管理や動作処理を分類し、明確に整理するうえで大きな効果を発揮します。システムの規模が大きくなるほど、クラスを使った設計がコード全体の読みやすさや修正しやすさにつながり、長く維持されるプロジェクトでも扱いやすい構造になります。学べば学ぶほど応用できる幅が広がる分野なので、一度覚えてしまえば長く使える知識となるでしょう。
生徒
「先生、プロパティとメソッドの違いがやっとイメージできました!情報と動きの両方をまとめられるんですね。」
先生
「そうなんです。プロパティはそのクラスがどんな姿をしているか、メソッドはどんな行動ができるかを表します。それぞれを整理して使うことで、より現実的なオブジェクトを作れるようになりますよ。」
生徒
「アクセス修飾子も便利ですね。守りたい情報を隠しておけるなんて、ゲームのキャラクターっぽいです!」
先生
「いい気づきですね。外から見せたい部分だけ公開するというのは、設計の大切な考え方です。安全で扱いやすいコードになります。」
生徒
「今日のサンプルコードも分かりやすかったです。メソッドの中でプロパティを使うと、キャラクターに命が吹き込まれたみたいでした。」
先生
「その感覚はとても大事ですよ。オブジェクト指向は『現実をコードで表現する』考え方なので、日常のものをクラス化してみると、より深く理解できるようになります。」