摘要:在本教程中,您将学习 TypeScript 中的访问修饰符,包括 private、protected 和 public。
访问修饰符更改 类 的属性和方法的可见性。TypeScript 提供了三种访问修饰符
- private
- protected
- public
请注意,TypeScript 在编译时在逻辑上控制访问,而不是在运行时。
private 修饰符
private 修饰符将可见性限制在同一个类中。当您向属性或方法添加 private 修饰符时,您可以在同一个类中访问该属性或方法。在类外部访问私有属性或方法的任何尝试都将在编译时导致错误。
以下示例演示了如何将 private 修饰符用于 person 类的 snn、firstName 和 lastName 属性
class Person {
private ssn: string;
private firstName: string;
private lastName: string;
// ...
}Code language: TypeScript (typescript)一旦 private 属性到位,您就可以在 Person 类的构造函数或方法中访问 ssn 属性。例如
class Person {
private ssn: string;
private firstName: string;
private lastName: string;
constructor(ssn: string, firstName: string, lastName: string) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Code language: TypeScript (typescript)以下尝试在类外部访问 ssn 属性
let person = new Person('153-07-3130', 'John', 'Doe');
console.log(person.ssn); // compile errorCode language: TypeScript (typescript)public 修饰符
public 修饰符允许从所有位置访问类属性和方法。如果您没有为属性和方法指定任何访问修饰符,则它们将默认采用 public 修饰符。
例如,Person 类的 getFullName() 方法具有 public 修饰符。以下显式地向 getFullName() 方法添加了 public 修饰符
class Person {
// ...
public getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
// ...
}Code language: TypeScript (typescript)它与省略 public 关键字的效果相同。
protected 修饰符
protected 修饰符允许在同一类及其子类中访问类的属性和方法。
当一个类(子类)继承自另一个类(父类)时,它是父类的子类。
如果您尝试从其他任何地方访问受保护的属性或方法,TypeScript 编译器将发出错误。
要向属性或方法添加 protected 修饰符,请使用 protected 关键字。例如
class Person {
protected ssn: string;
// other code
}
Code language: TypeScript (typescript)ssn 属性现在受保护。它可以在 Person 类以及从 Person 类继承的任何类中访问。您将在此处了解有关 继承 的更多信息。
Person 类声明了两个私有属性和一个受保护的属性。它的构造函数将这些属性初始化为三个参数
class Person {
protected ssn: string;
private firstName: string;
private lastName: string;
constructor(ssn: string, firstName: string, lastName: string) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Code language: TypeScript (typescript)为了使代码更简洁,TypeScript 允许您在构造函数中同时声明属性并初始化它们,如下所示
class Person {
constructor(
protected ssn: string,
private firstName: string,
private lastName: string
) {}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Code language: TypeScript (typescript)在考虑属性和方法的可见性时,最好从可见性最小的访问修饰符(即 private)开始。
总结
- TypeScript 为类属性和方法提供了三个访问修饰符:
private、protected和public。 private修饰符允许在同一类中访问。protected修饰符允许在同一类及其子类中访问。public修饰符允许从任何位置访问。- 如果您省略访问修饰符,则属性和方法具有
public访问权限。