TypeScript 访问修饰符
在TypeScript中,访问修饰符用于指定成员的可访问性。有两种访问修饰符:
public
:成员可以在类、子类、类实例中访问。private
:成员只能在类内部访问,子类也不能访问,类实例也不能访问(除非通过特定方法)。
class MyClass {
public publicProperty: string = 'public';
private privateProperty: string = 'private';
constructor() {
console.log(this.publicProperty); // 正确
console.log(this.privateProperty); // 正确
}
public publicMethod(): void {
console.log(this.publicProperty); // 正确
console.log(this.privateProperty); // 正确
}
private privateMethod(): void {
console.log(this.publicProperty); // 正确
console.log(this.privateProperty); // 正确
}
}
const instance = new MyClass();
console.log(instance.publicProperty); // 正确
// console.log(instance.privateProperty); // 错误,不能从外部访问私有属性
instance.publicMethod(); // 正确
// instance.privateMethod(); // 错误,不能从外部调用私有方法
注意,子类不能访问基类的私有成员。
class SubClass extends MyClass {
constructor() {
super();
// 以下两行会报错,因为 privateProperty 是私有的
// console.log(this.publicProperty);
// console.log(this.privateProperty);
}
}
此外,TypeScript 还提供了 protected
修饰符,它的访问权限介于 public
和 private
之间,即成员可以在类及其子类内访问,但不能在类的实例中访问。
评论已关闭