文章内容

2024/11/9 0:53:47,作 者: 黄兵

TypeScript protected 理解

在 Angular 中,protected 是 TypeScript 中的一个访问修饰符,它用于限制类成员(如属性或方法)的访问权限。与 publicprivate 修饰符相比,protected 具有更严格的访问控制。

protected 访问修饰符的作用:

  • 允许类内部访问protected 修饰符表示类的成员(属性或方法)只能在类内部或者子类中访问。即使类外部无法直接访问该成员,但继承该类的子类仍然可以访问和修改这些 protected 成员。
  • 禁止外部直接访问:与 private 修饰符不同,protected 允许子类访问该成员,但不能在类的外部直接访问。

举个例子:

假设你有一个基类 Vehicle 和一个派生类 Car

class Vehicle {
  protected model: string;

  constructor(model: string) {
    this.model = model;
  }

  protected displayModel(): void {
    console.log(`The vehicle model is: ${this.model}`);
  }
}

class Car extends Vehicle {
  constructor(model: string) {
    super(model);
  }

  public showCarDetails(): void {
    console.log(`Car model is: ${this.model}`); // 可以访问父类的 protected 属性
    this.displayModel(); // 可以调用父类的 protected 方法
  }
}

const myCar = new Car("Tesla");
myCar.showCarDetails(); // 正常调用子类中的方法

// 以下会报错,因为 model 是 protected,不能直接访问
// console.log(myCar.model); // 错误

总结:

  • protected 成员只能在当前类及其子类中访问,不能被外部直接访问。
  • 它提供了一种保护机制,让你可以在子类中访问和修改父类的成员,但不会让外部代码轻易修改它们。这通常用于封装和继承中。

Angular 中的 protected 典型应用:

在 Angular 中,protected 常常用于服务、组件、指令等类的继承中,以便子类能够继承父类的一些内部方法或属性,并对其进行扩展,但不允许外部直接访问。

例如,Angular 中的组件可能有一些 protected 的方法,供继承该组件的子类使用,而这些方法不能被外部直接访问或修改。


其它相关推荐:

1、[TypeScript] Unresolved basetypes

2、TypeScript 和 JavaScript 的区别

3、Typescript默认值以及可选参数

4、您的项目文件使用的 TypeScript 编译器和工具的版本不同于此机器上当前安装的版本

5、Angular HttpClient get 提交方式

分享到:

发表评论

评论列表