こんにちは!
この記事では TypeScript のアクセス演算子について分かりやすく解説していきます。
まずはアクセス演算子について簡単に説明します。
アクセス演算子はクラスのメンバー(プロパティやメソッド)のアクセス制限を指定するために使用されます。
TypeScript では public
private
protected
の 3 つのアクセス演算子があります。
それぞれのアクセス演算子がどのような役割を果たすのか、具体的なコード例を交えて紹介します!
まず、public はメンバーが どこからでもアクセス可能 であることを示します。
class Animal {
public name: string;
constructor(name: string) {
this.name = name;
}
}
const dog = new Animal("Dog");
console.log(dog.name); // "Dog"
上記のコードでは Animal
クラスの name
プロパティが public
と指定されています。
そのため dog
インスタンスから name
プロパティにアクセスできます。
次に private
はメンバーが クラス内でのみアクセス可能 であることを示しています。
class Animal {
private name: string;
constructor(name: string) {
this.name = name;
}
public getName(): string {
return this.name;
}
}
const dog = new Animal("Dog");
console.log(dog.getName()); // "Dog"
console.log(dog.name); // エラー
上記の例では Animal
クラスの name
プロパティが private
と指定されています。
そのため dog
インスタンスから直接 name
プロパティにアクセスするとエラーが発生します。
その代わりにコード中にあるように getName
メソッドを使用して name
プロパティにアクセスすることができます。
最後に protected
はメンバーが クラス内およびサブクラス内でのみアクセス可能 であることを示します。
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
public bark(): void {
console.log(`Woof! My name is ${this.name}!`);
}
}
const dog = new Dog("Dog");
dog.bark(); // "Woof! My name is Dog!"
上のコードでは Animal
クラスの name
プロパティが protected
と指定されています。
そのため Dog
クラス(Animal
クラスのサブクラス)内で name
プロパティにアクセスすることができます。
ただ、dog
インスタンスから直接 name
プロパティに以下のようにアクセスしようとするとエラーとなります。
console.log(dog.name); // エラー
このように protected
アクセス演算子を使うことで、クラスの継承関係を適切に保ちながら不要な外部アクセスを制限することができるわけですね。
TypeScriptのアクセス演算子は public
private
protected
の3種類
public
:メンバーがどこからでもアクセス可能private
:メンバーがクラス内でのみアクセス可能protected
:メンバーがクラス内およびサブクラス内でのみアクセス可能アクセス演算子をうまく使い分けることで、コードの安全性と可読性を向上させることができます!
TypeScriptの短絡評価の使い方「&&」「||」「??」の解説
TypeScriptのタイマー関数setTimeoutとsetIntervalの使い方
TypeScriptの多次元配列の使い方についてわかりやすく解説
TypeScriptでのタプルの使い方と実践テクニックを解説
TypeScriptのimport typeをわかりやすく解説
TypeScriptの配列やオブジェクトのソート完全ガイド
TypeScriptコメントアウトの使い方 完全ガイド
TypeScriptのオブジェクトとプロパティの存在チェック完全ガイド
TypeScriptで即時関数を使う方法を解説!基本から実践的な使い方まで