
TypeScriptのクラスをマスターして、より効率的で安全なコードを書こう!継承とアクセス修飾子の使い方も解説。
TypeScriptにおけるクラスの基本
TypeScriptは、JavaScriptに静的型付けを加えた言語であり、大規模なアプリケーション開発に適しています。クラスは、オブジェクト指向プログラミングの重要な概念であり、データ(プロパティ)と処理(メソッド)をまとめるための設計図です。
TypeScriptでクラスを定義するには、class
キーワードを使用します。以下は、基本的なクラスの例です。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
sayHello() {
console.log(Hello, my name is ${this.name});
}
}
この例では、Animal
というクラスを定義しています。name
というプロパティと、constructor
というコンストラクタ、そしてsayHello
というメソッドを持っています。
constructor
は、クラスのインスタンスが作成されるときに実行される特別なメソッドです。この例では、name
プロパティを初期化しています。
sayHello
メソッドは、コンソールにメッセージを出力します。クラスのインスタンスを作成して、このメソッドを呼び出すことができます。
const animal = new Animal("Dog");
animal.sayHello(); // Hello, my name is Dog
このように、TypeScriptのクラスを使うことで、コードの構造化と再利用性を高めることができます。
TypeScriptの継承
継承は、既存のクラス(親クラスまたはスーパークラス)のプロパティとメソッドを新しいクラス(子クラスまたはサブクラス)が引き継ぐことができる機能です。TypeScriptでは、extends
キーワードを使用して継承を実現します。
class Dog extends Animal {
breed: string;
constructor(name: string, breed: string) {
super(name);
this.breed = breed;
}
bark() {
console.log("Woof!");
}
}
この例では、Dog
クラスはAnimal
クラスを継承しています。Dog
クラスは、Animal
クラスのname
プロパティとsayHello
メソッドを自動的に持ちます。また、Dog
クラスは、独自のプロパティbreed
とメソッドbark
も持っています。
super()
は、親クラスのコンストラクタを呼び出すために使用されます。この例では、super(name)
はAnimal
クラスのコンストラクタを呼び出し、name
プロパティを初期化します。
継承を使うことで、コードの重複を減らし、保守性を高めることができます。
const dog = new Dog("Buddy", "Golden Retriever");
dog.sayHello(); // Hello, my name is Buddy
dog.bark(); // Woof!
アクセス修飾子
TypeScriptでは、クラスのメンバー(プロパティとメソッド)にアクセス修飾子を設定することで、アクセス範囲を制御できます。主なアクセス修飾子は、public
、private
、protected
の3つです。
public
:デフォルトのアクセス修飾子です。クラスの外部から自由にアクセスできます。
private
:クラスの内部からのみアクセスできます。クラスの外部からはアクセスできません。
protected
:クラスの内部および、そのクラスを継承した子クラスからアクセスできます。クラスの外部からはアクセスできません。
class Person {
public name: string;
private age: number;
protected address: string;
constructor(name: string, age: number, address: string) {
this.name = name;
this.age = age;
this.address = address;
}
public sayHello() {
console.log(Hello, my name is ${this.name}. I am ${this.age} years old.);
}
}
この例では、name
プロパティはpublic
なので、クラスの外部から自由にアクセスできます。age
プロパティはprivate
なので、クラスの内部からのみアクセスできます。address
プロパティはprotected
なので、クラスの内部および、Person
クラスを継承した子クラスからアクセスできます。
アクセス修飾子を使うことで、データの隠蔽とカプセル化を実現し、コードの安全性を高めることができます。
参考リンク
まとめ
この記事では、TypeScriptにおけるクラスの基本的な使い方、継承、アクセス修飾子について解説しました。クラスを使うことで、コードの構造化と再利用性を高めることができます。継承を使うことで、コードの重複を減らし、保守性を高めることができます。アクセス修飾子を使うことで、データの隠蔽とカプセル化を実現し、コードの安全性を高めることができます。これらの概念を理解することで、より堅牢で保守性の高いTypeScriptアプリケーションを開発できるようになるでしょう。