构造函数
在这个例子中,我们使用 constructor
在基类中声明公共属性 position
和受保护属性 speed
。这些属性称为参数属性。他们让我们在一个地方声明一个构造函数参数和一个成员。
TypeScript 中最好的事情之一是将构造函数参数自动分配给相关属性。
class Car {
public position: number;
protected speed: number;
constructor(position: number, speed: number) {
this.position = position;
this.speed = speed;
}
move() {
this.position += this.speed;
}
}
所有这些代码都可以在一个构造函数中恢复:
class Car {
constructor(public position: number, protected speed: number) {}
move() {
this.position += this.speed;
}
}
它们都将从 TypeScript(设计时和编译时)转换为 JavaScript,结果相同,但编写的代码要少得多:
var Car = (function () {
function Car(position, speed) {
this.position = position;
this.speed = speed;
}
Car.prototype.move = function () {
this.position += this.speed;
};
return Car;
}());
派生类的构造函数必须使用 super()
调用基类构造函数。
class SelfDrivingCar extends Car {
constructor(startAutoPilot: boolean) {
super(0, 42);
if (startAutoPilot) {
this.move();
}
}
}
let car = new SelfDrivingCar(true);
console.log(car.position); // access the public property position