学习TypeScript2 --- 类class

75 阅读2分钟

在ts 中的class,不仅提供了class的语法功能,也是作为一种类型的存在

image.png

实例属性初始化

    class Person {
        age: number // 声明成员age
        gender = '男' // 声明成员gender 并设置初始值
    }

构造函数(constructor)

class Person {
// 初始化成员
  name: string
  age: number
  // 需要为构造函数 参数 指定类型注解,否则会被隐式推断为any类型
  constructor(name: string, age: number) {
  // 需要初始化成员才可以通过this.name / this.age 访问
    this.name = name
    this.age = age
  }
}
const person1 = new Person('帅哥', 19)
console.log(person1.age)

实例方法

方法的类型注解(参数和返回值)与函数相同

class Point {
  x = 1
  y = 2
  scale(n: number): void {
    this.x *= n
    this.y *= n
  }
}
const p1 = new Point()
p1.scale(10)
console.log(p1.x, p1.y) // 10 20

类的继承(extends)和实现接口(implements)

继承(extends)

class Animal {
  move() {
    console.log("动物大队集合")
  }
}
class Dog extends Animal {
  name = "二哈队长"
  bark() {
    console.log(this.name + "前来报到")
  }
}
const dog = new Dog()
dog.move()//动物大队集合
dog.bark()//二哈队长前来报到

实现接口(implements)

interface Singable { // 定义接口
  Sing(): void
  Name: string
}
class Jack implements Singable {
// 实现接口 需要提供接口中的所有属性
  Name = 'jack'
  Sing(): void {
    console.log(this.Name + '在唱歌')
  }
}
const j = new Jack()
j.Sing()

class类的可见性修饰符

类成员可见性:可以使用TS可见性修饰符 来控制class方法或属性对于class外的代码是否可见 可见性修饰符包括:1、public(公有的) 2、protected(受保护的) 3、private(私有的)

  1. public:表示公有的,公开的,公有成员都可以访问(默认值,可以省略)
  2. protected:表示受保护的,仅对其声明所在的类和子类中可见(实例对象不可访问)
    class Animal {
      protected move() {
        console.log("动物大队集合")
      }
    }
    class Dog extends Animal {
      name = "二哈队长"
      bark() {
        this.move() // 可以通过this访问
        console.log(this.name + "前来报到")
      }
    }
    const dog = new Dog()
    //dog.move() 由于是受保护的,实例对象访问不了
    dog.bark()
    
  3. private:表示私有的,只在当前类中可以访问,对实例对象以及子类也是不可访问的
class Animal {
  private move() {
    console.log("动物大队集合")
  }
  walk() {
    this.move() // 只可以在当前类中访问
  }
}