typescritp对类的支持可谓是更加丰富 除了ES6 ES7 已经有的内容还添加了一些新的内容

1、面向对象的基础术语

  • 类(class):定义了一切事物的抽象特点
  • 对象(Object):类的实例
  • 面向对象(oop)的三大特征:封装 继承 多态
    1. // 创建一个类
    2. class Animal { // => 封装
    3. // 定义构造函数
    4. constructor (name) {
    5. this.name = name
    6. }
    7. // 定义方法
    8. run () {
    9. return `${this.name} is running`
    10. }
    11. }
    12. const snake = new Animal('lily')
    13. console.log(snake.run())
  1. // 新定义的Dog继承了Animal
  2. class Dog extends Animal { // => 继承
  3. bark () {
  4. return `$(this.name) is barkimg`
  5. }
  6. }
  7. const xiaobao = new Dog('xiaobao');
  8. console.log (xiaobao.run());
  9. console.log (xiaobao.bark());
  1. class Cat extends Animal { // => 多态
  2. // 创建静态属性 - 可直接调用
  3. static categories = ['mammal']
  4. cosntructor(name) {
  5. super(name) // super 重写构造函数
  6. console.log(this.name)
  7. }
  8. run() {
  9. return 'Meow,' + super.run()
  10. }
  11. }
  12. const maomao = new Cat('maomao')
  13. console.log(maomao.run())

2、TypeScript 中的类

  • Public:修饰的属性或方法是共有的
  • Private:修饰的属性或方法是私有的 ```typescript // 创建以一个类 class Animal { // 定义构造函数 constructor(name) {
    1. this.name = name
    } // 定义方法 // 使用Private修饰 外部不可访问 private run() {
    1. return `${this.name} is running`
    } } const snake = new Animal(‘lily’) // 此时snake.run() 会报错 console.log(snake.run())

// 继承 class Dog extends Animal { bark() { return ${this.name} is barking } } // 此时xiaobao.run() 也会报错 const xiaobao = new Dog(‘xiaobao’)

  1. - Protected:修饰的属性或者方法是受保护的
  2. ```typescript
  3. // 创建以一个类
  4. class Animal {
  5. // 定义构造函数
  6. constructor(name) {
  7. this.name = name
  8. }
  9. // 定义方法
  10. // 使用Protected修饰 外部不可访问 但是自己的子类可以访问
  11. protected run() {
  12. return `${this.name} is running`
  13. }
  14. }
  15. const snake = new Animal('lily')
  16. // 此时snake.run() 会报错
  17. console.log(snake.run())
  18. // 继承
  19. class Dog extends Animal {
  20. bark() {
  21. return `${this.name} is barking`
  22. }
  23. }
  24. // 此时xiaobao.run() 不会报错
  25. const siaobao = new Dog('xiaobao')
  26. console.log(xiaobao.run());
  27. console.log(xiaobao.bark());
  • readonly:修饰的属性或者方法只能读不能写