您现在的位置是:首页 >技术杂谈 >TypeScript网站首页技术杂谈
TypeScript
简介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 当做一个类型来用。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。