- 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!