您现在的位置是:首页 >技术杂谈 >TypeScript网站首页技术杂谈

TypeScript

Rlm* 2024-06-17 10:43:16
简介TypeScript

TypeScript中文网

一、Ts接口中[propName: string]: any应用
在用typescript开发项目时,都需要定义类型,可在前后端分离后,我们往往不确定后端返回的数据是否都是我们定义的类型,所以在定义变量时,除了我们需要的键值,需要采用[propName: string]: any作为不确定键值的判断

interface SquareConfig {
    color?: string;
    width?: number;
    [propName: string]: any;
}

二、implements和extends的区别

//implements是对某个接口的实现,必须满足接口的类型规范
  class Father implements Person {
    public money: number = 1000
  }
//extends是对某个类的继承,可获取父类的所有的静态属性
  class Son extends Father {
    constructor() {
      super();
    }
    getMoney(): void {
      console.log(this.money,333);
    }
  }
  const son=new Son()
  son.getMoney()
}

implements和extends 前者通过声明这个类实现一个或者多个接口,而后者通过继承父类,拥有了父类的功能,可以重写父类的方法,也可以不重写。相对于implements而言,它是实现接口,可想而知,实现接口(interface)一般为空的,所以你一般要重写接口所有的方法。一个类不能extends多个类,但是可以通过接口然后让一个类去implements多个接口

punlic class A extends B implements C,D,E 这样。

Implement接口实现

class A implements B

B是interface类型的,且他的里面的方法都是abstract类型的方法。

extends重要的地方

extends可以继承父类的方法,也可以重写他,但是要注意的是,如果父类是抽象类,内部有抽象的方法,子类在extends的时候,如果子类不是抽象类,那么子类就一定要对父类中的抽象方法进行重写。但如果子类也是抽象类,则可以不可考虑重写。extends支持子类,孙类…即可以继承多代。

class Point {
    x: number;
    y: number;
    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}
// 作为类
interface Point3d extends Point {
    z: number;
}
// 作为类型
let point3d: Point3d = {x: 1, y: 2, z: 3};

上述代码在声明 class Point 时,除了会创建一个名为 Point 的类之外,同时也创建了一个名为 Point 的类型(实例的类型)。所以既可以将 Point 当做一个类来用, 也可以将 Point 当做一个类型来用。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。