
- TypeScript 基礎
- TypeScript - 首頁
- TypeScript - 路線圖
- TypeScript - 概述
- TypeScript - 環境設定
- TypeScript - 基本語法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 變數
- TypeScript - let & const
- TypeScript - 運算子
- TypeScript 基本型別
- TypeScript - 型別
- TypeScript - 型別註解
- TypeScript - 型別推斷
- TypeScript - 數字
- TypeScript - 字串
- TypeScript - 布林值
- TypeScript - 陣列
- TypeScript - 元組
- TypeScript - 列舉
- TypeScript - any
- TypeScript - never
- TypeScript - 聯合型別
- TypeScript - 字面量型別
- TypeScript - 符號
- TypeScript - null vs. undefined
- TypeScript - 類型別名
- TypeScript 控制流
- TypeScript - 決策
- TypeScript - if 語句
- TypeScript - if else 語句
- TypeScript - 巢狀 if 語句
- TypeScript - switch 語句
- TypeScript - 迴圈
- TypeScript - for 迴圈
- TypeScript - while 迴圈
- TypeScript - do while 迴圈
- TypeScript 函式
- TypeScript - 函式
- TypeScript - 函式型別
- TypeScript - 可選引數
- TypeScript - 預設引數
- TypeScript - 匿名函式
- TypeScript - 函式構造器
- TypeScript - rest 引數
- TypeScript - 引數解構
- TypeScript - 箭頭函式
- TypeScript 介面
- TypeScript - 介面
- TypeScript - 介面擴充套件
- TypeScript 類和物件
- TypeScript - 類
- TypeScript - 物件
- TypeScript - 訪問修飾符
- TypeScript - 只讀屬性
- TypeScript - 繼承
- TypeScript - 靜態方法和屬性
- TypeScript - 抽象類
- TypeScript - 存取器
- TypeScript - 鴨子型別
- TypeScript 高階型別
- TypeScript - 交叉型別
- TypeScript - 型別保護
- TypeScript - 型別斷言
- TypeScript 型別操作
- TypeScript - 從型別建立型別
- TypeScript - keyof 型別運算子
- TypeScript - typeof 型別運算子
- TypeScript - 索引訪問型別
- TypeScript - 條件型別
- TypeScript - 對映型別
- TypeScript - 模板字面量型別
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型約束
- TypeScript - 泛型介面
- TypeScript - 泛型類
- TypeScript 其他
- TypeScript - 三斜槓指令
- TypeScript - 名稱空間
- TypeScript - 模組
- TypeScript - 環境宣告
- TypeScript - 裝飾器
- TypeScript - 型別相容性
- TypeScript - Date 物件
- TypeScript - 迭代器和生成器
- TypeScript - Mixins
- TypeScript - 實用型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
TypeScript - 訪問修飾符
訪問修飾符的概念用於在 TypeScript 中實現封裝或資料隱藏。訪問修飾符定義了在定義類之外類成員的可見性。類成員包括屬性和函式。訪問修飾符也稱為訪問說明符。
TypeScript 支援三種類型的訪問修飾符——public、private 和 protected。這些修飾符是用於將類成員宣告為公共、私有或受保護的關鍵字。
公共類成員可以在程式碼的任何地方訪問。私有成員只能在定義它的類中訪問。受保護的成員可以在類和派生類中訪問。
讓我們詳細瞭解上面討論的三種訪問修飾符。
公共訪問修飾符
TypeScript 中的公共訪問修飾符定義了一個公共類成員。預設情況下,類的成員是公共的。因此,使用 public 關鍵字宣告成員為公共成員是可選的。公共成員可以在定義成員的類內和類外任何地方訪問。
示例
在下面的示例中,我們建立了一個名為 Person 的類。Person 類有兩個成員,一個是公共屬性 name,另一個是公共方法 greet()。由於這些成員被宣告為公共的,因此可以在程式的任何地方訪問它們。
我們還建立了 Person 類的例項 person。我們訪問 person 物件的 name 屬性併為其賦值。最後,我們呼叫 greet 函式以顯示帶有新名稱的問候語。
class Person { public name: string = ""; public greet(): void { console.log(`Hello, my name is ${this.name}!`); } } const person = new Person(); person.name = "John"; person.greet();
編譯後,它將生成以下 JavaScript 程式碼。
class Person { constructor() { this.name = ""; } greet() { console.log(`Hello, my name is ${this.name}!`); } } const person = new Person(); person.name = "John"; person.greet();
以上示例程式碼的輸出如下:
Hello, my name is John!
私有訪問修飾符
私有訪問修飾符限制了類成員(屬性或方法)對其宣告所在的類的訪問。當您向屬性或方法新增 private 修飾符時,您只能在同一個類中訪問該屬性或方法。
TypeScript 中的私有訪問修飾符定義了一個私有類成員。私有成員可以在定義它們的類中訪問。
示例
在這個例子中,我們建立了一個 BankAccount 類,它有一個私有屬性 balance,只能在類內訪問和修改。此外,我們還有一個私有方法 calculateInterest(),它根據餘額計算利息。
您可以從輸出中觀察到,嘗試訪問私有成員將導致 TypeError。
class BankAccount { private balance: number; constructor(initialBalance: number) { this.balance = initialBalance; } private calculateInterest(): number { const interestRate = 0.05; return this.balance * interestRate; } } // Creating an instance of the BankAccount class const account = new BankAccount(1000); // Attempting to access private members console.log(account.balance); console.log(account.calculateInterest());
編譯後,它將生成以下 JavaScript 程式碼。
class BankAccount { constructor(initialBalance) { this.balance = initialBalance; } calculateInterest() { const interestRate = 0.05; return this.balance * interestRate; } } // Creating an instance of the BankAccount class const account = new BankAccount(1000); // Attempting to access private members console.log(account.balance); console.log(account.calculateInterest());
並將給出以下錯誤:
Property 'balance' is private and only accessible within class 'BankAccount'. Property 'calculateInterest' is private and only accessible within class 'BankAccount'.
以上示例程式碼的輸出如下:
1000 50
受保護的訪問修飾符
受保護的訪問修飾符用於定義受保護的類成員(屬性或方法)。受保護的資料成員只能在定義它的類或任何擴充套件它的類中訪問。
示例
在這個例子中,我們建立了一個基類 Animal,它有一個受保護的屬性 name,可以在類及其派生類中訪問和修改。我們還有一個受保護的方法 makeSound(),它只是記錄一條訊息。
然後,我們建立一個派生類 Dog,它擴充套件了 Animal 類。Dog 類添加了一個公共方法 bark(),它利用從基類繼承的 name 屬性輸出一條 bark 訊息。
最後,我們建立了一個名為 dog 的 Dog 類例項,其名稱為“Buddy”,並呼叫 bark() 方法。
輸出將顯示狗的名字,然後是 bark 訊息。
class Animal { protected name: string; constructor(name: string) { this.name = name; } protected makeSound(): void { console.log("The animal makes a sound"); } } class Dog extends Animal { public bark(): void { console.log(`${this.name} barks!`); } } // Creating an instance of the Dog class const dog = new Dog("Buddy"); dog.bark();
編譯後,它將生成以下 JavaScript 程式碼。
class Animal { constructor(name) { this.name = name; } makeSound() { console.log("The animal makes a sound"); } } class Dog extends Animal { bark() { console.log(`${this.name} barks!`); } } // Creating an instance of the Dog class const dog = new Dog("Buddy"); dog.bark();
以上示例程式碼的輸出如下:
Buddy barks!