目錄
TypeScript 類 (Classes) 的修飾符
TypeScript 是由 Microsoft 開發的 JavaScript 超集,提供了類型系統和 ES6 的特性,使開發者能夠更輕鬆地編寫可維護的程式碼。類 (Classes) 的修飾符是一種影響類的行為的特性,可以改變類的訪問權限以及屬性和方法的行為。本文將介紹 TypeScript 中的三種類 (Classes) 修飾符:`public`、`protected` 和 `private`,並提供實作範例與最佳實踐。
什麼是類 (Classes) 的修飾符
類 (Classes) 的修飾符主要用於控制屬性和方法的可見性與訪問性。TypeScript 支持以下三種類修飾符:
1. public
`public` 修飾符是默認的修飾符,表示該屬性或方法可以被任何地方訪問。
class Animal {
public name: string;
public constructor(theName: string) {
this.name = theName;
}
public move(distanceInMeters: number): void {
console.log(`{this.name} moved{distanceInMeters}m.`);
}
}
const animal = new Animal("Cat");
animal.move(10);
2. protected
`protected` 修飾符表示該屬性或方法只能被該類及其子類訪問。
class Animal {
protected name: string;
protected constructor(theName: string) {
this.name = theName;
}
}
class Cat extends Animal {
constructor(name: string) {
super(name);
}
public move(distanceInMeters: number): void {
console.log(`{this.name} moved{distanceInMeters}m.`);
}
}
const cat = new Cat("Cat");
cat.move(10);
3. private
`private` 修飾符表示該屬性或方法只能被該類訪問,無法被子類訪問。
class Animal {
private name: string;
private constructor(theName: string) {
this.name = theName;
}
}
class Cat extends Animal {
constructor(name: string) {
super(name);
}
}
const cat = new Cat("Cat");
// cat.name; // 錯誤:屬性 'name' 只能在類 'Animal' 中訪問
錯誤排除
在使用修飾符時,開發者可能會遇到訪問控制的錯誤,例如嘗試從外部訪問 `private` 或 `protected` 屬性。這時,可以檢查訪問的位置是否在正確的類範圍內,並確保使用了正確的修飾符以符合意圖。
延伸應用
類的修飾符不僅限於基本屬性與方法,還可以與 TypeScript 的其他特性結合使用,例如介面 (Interfaces) 和裝飾器 (Decorators),進一步增強代碼的可維護性和可讀性。
結論
TypeScript 中的類 (Classes) 修飾符幫助開發者更好地控制類的訪問權限。通過使用 `public`、`protected` 和 `private`,開發者可以有效地管理程式碼的可讀性和安全性,從而提升程式碼的可維護性。
Q&A(常見問題解答)
Q1: 為什麼要使用修飾符?
A1: 使用修飾符可以幫助開發者控制類的屬性和方法的可見性,從而提高程式碼的安全性和可維護性。
Q2: 修飾符能否結合使用?
A2: 不可以,屬性或方法只能使用一個修飾符,但可以根據需求選擇合適的修飾符來達成不同的訪問需求。
Q3: 何時應使用 `protected` 和 `private`?
A3: 當你希望屬性或方法僅在類內及其子類中可見時,使用 `protected`;如果只希望在該類內可見,則使用 `private`。
—