建構函式
在這個例子中,我們使用 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