class的类型
如何给 calss 添加类型说明:
- 实例属性的类型首先列出来,表示this对象上有此属性
- 类可以当做接口使用,相当于new 以后的实例类型
``typescript class Animal { name: string; // 1 constructor(name: string) { this.name = name; } sayHi(): string { returnMy name is ${this.name}`; } }
let a: Animal = new Animal(‘Jack’); // 2 console.log(a.sayHi()); // My name is Jack
<a name="pSBQt"></a># class implements interface (类实现接口)通过 implements 可以把接口的属性加到类中```typescriptinterface Alarm {alert(): void;}class Car implements Alarm {alert() {console.log('Car alert');}}
interface extends class (接口继承类)
常见的面向对象语言中,接口是不能继承类的,但是在 TypeScript 中却是可以的,
因为在TS中声明 class 的时候同时会创建后一个同名类型,这个类型包含class 实例属性类型和方法类型,
class Point {x: number;y: number;constructor(x: number, y: number) {this.x = x;this.y = y;}}let p:Point = { // {x:number; y:number}x:2,y:2}
所以interface extends class 实际上是 interface extends interface
class Point {x: number;y: number;constructor(x: number, y: number) {this.x = x;this.y = y;}}interface PointInstanceType {x: number;y: number;}// 等价于 interface Point3d extends PointInstanceTypeinterface Point3d extends Point {z: number;}let point3d: Point3d = {x: 1, y: 2, z: 3};
