创建类:class关键字

  1. //age为number类型
  2. //sex为string类型
  3. class person{
  4. agenumber
  5. sex: "男"
  6. }
  7. //person的实例对象p的类型是person
  8. const p = new person()

构造函数:constructor关键字

一个类只可以有一个constructor方法,且不写会调用默认的构造函数

  1. //构造函数不需要返回值类型
  2. class person{
  3. age: number
  4. sex: string
  5. constructor(age: number,sex: string){
  6. this.age=age
  7. this.sex=sex
  8. }
  9. }
  10. //调用函数
  11. const p = new person(18,"男")

类的实例方法

  1. //定义一个取平方的方法
  2. class point {
  3. x=10
  4. y=20
  5. scale(n:number):void{
  6. this.x*=n
  7. this.y*=n
  8. }
  9. }
  10. //调动函数
  11. const p = new point()
  12. p.scale(10)

类的继承

在JS中只有extends,而TS新增了implements

extends方法

  1. //定义动物类
  2. class Animal{
  3. move(){console.log('moving')}
  4. }
  5. //定义狗类并继承动物类
  6. class Dog extends Animal{
  7. bark(){consple.log('汪')}
  8. }
  9. //狗类具有move()和bark()方法
  10. const dog = new Dog()
  11. dog.move()//moving
  12. dog.dark()//汪

implements方法(实现)

实现接口,可以大致理解为继承接口,使用此方法后类中必须指定所有的方法和属性

  1. //定义接口
  2. interface singale{
  3. string():void
  4. name:string
  5. }
  6. //类中实现接口
  7. class person implements singale{
  8. name='jack'
  9. sing(){
  10. console.log('我是个沉默不语的,靠着墙壁晒太阳的过客')
  11. }
  12. }
  13. //调用
  14. const p = new person()
  15. console.log(p.name+"在唱"+p.sing())

可见性修饰符

public

在任何地方都可以被访问到(默认为public)

  1. //动物类
  2. class Animal{
  3. public move(){
  4. console.log('走两步')
  5. }
  6. }
  7. const a = new Animal()
  8. a.move()//输出 走两步
  9. //狗继承
  10. class Dog extends Animal{
  11. bark(){
  12. this.move()
  13. console.log('汪')
  14. }
  15. }
  16. const d = new dog
  17. d.bark()//输出 走两步 汪
  18. d.move()//输出 走两步

protected

在声明类中或子类可以访问,子类可以通过this来访问父类受保护的成员,但是实例不可以访问

  1. //动物类
  2. class Animal{
  3. protected move(){
  4. console.log('走两步')
  5. }
  6. run(){
  7. this.move()
  8. console.log('跑起来')
  9. }
  10. }
  11. const a = new Animal()
  12. a.move()//报错,不可在实例对象中访问受保护的成员
  13. a.run()//输出走两步 跑起来
  14. //狗继承
  15. //调用bark()函数输出 走两步 跑起来 汪
  16. class Dog extends Animal{
  17. bark(){
  18. this.move()
  19. console.log('汪')
  20. }
  21. }
  22. const d = new dog
  23. d.bark()//输出 走两步 跑起来 汪
  24. d.run()//输出走两步 跑起来
  25. d.move()//报错

private

只在当前类可见,其他都不可访问

  1. //动物类
  2. class Animal{
  3. private move(){
  4. console.log('走两步')
  5. }
  6. }
  7. const a = new Animal()
  8. a.move()//报错,不可在实例对象中访问私有的成员
  9. //狗继承
  10. class Dog extends Animal{
  11. bark(){
  12. //this.move()//报错 不可在子类访问父类私有成员
  13. console.log('汪')
  14. }
  15. }
  16. const d = new dog
  17. d.move()//报错