高级类型class类

101 阅读1分钟

实例属性初始化


class Person {
  age: number;
  gender = "男";
  // 等价于gender: string = "男";
  constructor(age: number, gender: string) {
    this.age = age;
    this.gender = gender;
  }
  sayHi(ages) {
        this.age = ages;
    }
}

const p = new Person(18, "女");
p.sayHi(20);

类的继承

利用extends继承

class Animal {
  sayHi() {
    console.log("我是动物");
  }
}
class Dog extends Animal {
  say() {
    console.log("我是狗");
  }
}

const d = new Dog();
d.sayHi();

利用implements接口实现继承:Dog类中必须提供接口中指定的方法和属性

interface Animal {
  say(): void;
  name: string;
}
class Dog implements Animal {
  name: string = "yoga";
  say() {
    console.log("我是狗");
  }
}

const d = new Dog();

类中的可见性修饰符

public:共有的,这个是默认存在的,任何地方都可以访问

protected:受保护的,仅对所在类和子类的构造函数中访问,实例对象访问不行

private:私有的,当前类构造函数中可用,实例对象访问不行

readonly修饰符

class Person {
  // 1:只能在cunstructor中赋值一次,其他地方不能赋值,可以有默认值
  // 2:readonly 修饰的属性是只读的,只能修饰属性,不能修饰方法
  // 3:属性后面需要加上类型注解,不加的会推断为字面量类型
  // readonly name: string = "yoga";
  readonly name = "yoga";
  constructor(name: string) {
    this.name = name;
  }
}

const p = new Person("yoga");