In this example we use the constructor
to declare a public property position
and a protected property speed
in the base class. These properties are called Parameter properties. They let us declare a constructor parameter and a member in one place.
One of the best things in TypeScript, is automatic assignment of constructor parameters to the relevant property.
class Car {
public position: number;
protected speed: number;
constructor(position: number, speed: number) {
this.position = position;
this.speed = speed;
}
move() {
this.position += this.speed;
}
}
All this code can be resumed in one single constructor:
class Car {
constructor(public position: number, protected speed: number) {}
move() {
this.position += this.speed;
}
}
And both of them will be transpiled from TypeScript (design time and compile time) to JavaScript with same result, but writing significantly less code:
var Car = (function () {
function Car(position, speed) {
this.position = position;
this.speed = speed;
}
Car.prototype.move = function () {
this.position += this.speed;
};
return Car;
}());
Constructors of derived classes have to call the base class constructor with 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