深入了解 TypeScript 中的類 (Classes) 修飾符:2025 最新語法與最佳實踐

了解TypeScript中的Classes修飾符

目錄

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`。

發佈留言