• private
  • protected
  • public
  1. class P {
  2. name: string; // 不写等于写了public
  3. public sayHi() {
  4. console.log('hi')
  5. }
  6. }
  7. const p = new P();
  8. p.name = 'zwx';
  9. console.log(p.name); // zwx
  10. p.sayHi(); // hi
  11. // public 允许在类的内外调用
class P {
  private name: string; // 只允许类内被调用
  public sayHi() {
    console.log('hi')
  }
}

const p = new P();
p.name = 'zwx'; // Property 'name' is private and only accessible within class 'P'.
class P {
  protected name: string; // 允许在类内以及继承的子类中使用
  public sayHi() {
    console.log('hi')
  }
}

class T extends P {
  public sayBay() {
    this.name = 'pw'; // 子类中可以使用
    console.log()
  }
}

constructor

class P {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
}

const p = new P('zwx');
p.name // zwx

/*************************************/
class P {
  constructor(public name: string) {
    this.name = name;
  }
}

const p = new P('zwx');
p.name // zwx

// 在TS中,下面的简化写法等同于上面的常规写法
class P {
  constructor(public name: string){}
}

class T extends P {
  constructor(public name: string, public age: number) {
    super(name)
  }
}

// 子类如果有 constructor ,不管父类有没有,子类都需要调用以下 super


class P {
  // constructor(public name: string){}
}

class T extends P {
  constructor(public name: string, public age: number) {
    super() // 必须要调用空的super
  }
}