修饰符:

  1. public:实例,子类及自身内部都可以使用
  2. protected:子类及自身内部可以使用
  3. private:自身内部可以使用

语法糖:

  1. class Person {
  2. constructor(public name: string) {}
  3. }
  4. let name = new Person('alex').name
  5. console.log(name)
  6. export {}

直接在 constructor 参数中声明修饰符 public,就不需要再在 Person 上定义变量 name 了。

readonly 修饰符

只能在 constructor 中赋值,其他地方不能赋值

  1. class Person {
  2. constructor (readonly name: string) {}
  3. }

存取器

  1. class Person {
  2. set (newName: string) {
  3. this.name = newName;
  4. }
  5. get () {
  6. return this.name;
  7. }
  8. constructor (public name: string) {}
  9. call () {
  10. console.log(this.name);
  11. }
  12. }
  13. const person = new Person('alex')
  14. person.call();

静态属性

  1. class Animal {
  2. static class = '动物'
  3. }
  4. console.log(Animal.class)

抽象类

含有抽象属性的类必须声明为抽象类,抽象类不能被实例,只能被继承

  1. abstract class Animal {
  2. abstract call (): void;
  3. }
  4. class Cat extends Animal {
  5. call () {
  6. console.log('🐱')
  7. }
  8. }
  9. new Cat().call();