前言
访问修饰符是 TypeScript 中一个非常有用的特性,它可以帮助我们控制类成员的访问权限。
什么是访问修饰符?
在 TypeScript 中,访问修饰符用于限制类成员的访问权限。通过使用不同的访问修饰符,我们可以控制哪些类成员可以被访问,哪些成员是私有的,哪些成员是公共的等等。这样,我们可以在代码中实现封装和隐藏实现细节的目的,提高代码的可维护性和安全性。
TypeScript中的访问修饰符
TypeScript 支持以下三种访问修饰符:
1. public
public
是默认的访问修饰符,如果不显式指定访问修饰符,默认为 public
。使用 public
修饰的成员可以在任何地方被访问。
class Person {
public name: string;
constructor(name: string) {
this.name = name;
}
public sayHello() {
console.log(`Hello, ${this.name}!`);
}
}
const person = new Person("Alice");
person.sayHello(); // 输出: Hello, Alice!
在这个例子中,name
和 sayHello
都是使用 public
修饰的。因此,它们可以被类的实例以及外部代码访问。
2. private
private
访问修饰符限制了成员只能在定义它们的类内部访问。这意味着私有成员对于类外部的代码来说是不可见的。
class Person {
private age: number;
constructor(age: number) {
this.age = age;
}
private getAge() {
return this.age;
}
}
const person = new Person(25);
console.log(person.age); // 错误!无法访问私有成员 'age'
console.log(person.getAge()); // 错误!无法访问私有成员 'getAge'
在这个例子中,age
和 getAge
都是使用 private
修饰的。因此,它们只能在 Person
类的内部被访问。
3. protected
protected
访问修饰符将成员标记为受保护的,可以在定义它们的类及其子类中访问。
class Person {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Employee extends Person {
private salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
public getSalary() {
return this.salary;
}
public introduce() {
console.log(`My name is ${this.name}.`);
}
}
const employee = new Employee("Bob", 5000);
console.log(employee.name); // 错误!无法访问受保护的成员 'name'
console.log(employee.getSalary()); // 输出: 5000
employee.introduce(); // 输出: My name is Bob.
在这个例子中,name
是使用 protected
修饰的。它可以在 Person
类及其子类中被访问,但不能在外部代码中被访问。
总结
public
、private
和 protected
这三种访问修饰符可以帮助我们控制类成员的访问权限。我们了解了它们的用法和作用范围,以及如何在类的实例化和继承过程中使用它们。
希望能够帮助大家更好地掌握 TypeScript 中的访问修饰符,并在实际开发中灵活运用。
原文链接:https://juejin.cn/post/7241975039980814395 作者: