typescript--6 属性的封装

173 阅读1分钟

属性的封装

typescript 中属性值 有三种修饰符。

  1. public 默认的修饰符, 表示在任意位置,都可以访问和修改
  2. private 私有属性, 只能在类的内部访问和修改。
  3. protected 受保护的属性,在子类和本身类中能访问修改

第一个默认的修饰符,很容易理解了。现在来具体说下第二个和第三个

private 私有属性

私有属性,只能在类的内部访问和使用。

class Person {
  private name: string
  constructor(name:string) {
    this.name = name
  }
}
let per = new Person('cg')
console.log(per.name)  // 在这里是不能直接访问name 属性的

可以添加内部方法来满足访问和修改私有属性

class Person {
  private name: string
  constructor(name:string) {
    this.name = name
  }
  setName(val:string) {
    this.name = val
  }
  getName() {
    return this.name
  }
}
let per = new Person('cg')
per.setName('hxw')
console.log(per.getName())  // 通过内部函数的形式,来访问 和 修改 私有实属性

在typescript 中可以通过设置 getter setter 的方式来访问和修改私有属性

class Person {
  private _name: string
  constructor(name:string) {
    this._name = name
  }
  
  get name() {
    return this._name
  }
  set name(val:string) {
    this._name = val
  }
}
let per = new Person('cg')
per.name = 'hxw'
console.log(per.name)

私有属性在子类中也不能直接用

class Person {
  private _name: string
  constructor(name:string) {
    this._name = name
  }
  // get name() {
  //   return this._name
  // }
  // set name(val:string) {
  //   this._name = val
  // }
}
class Usa extends Person {
  myname(){
    return this.name
  }
}
// 将上面的get 和 set 注释掉 下面的子类中也不能直接使用

protected 受保护的

在子类和本身类中能直接访问和修改