Ahogy @Vitaliy Ulantikov válaszol, akkor használhatja a readonlymódosító a tulajdon. Ez működik, pontosan olyan, mint egy getter.
interface Point {
readonly x: number;
readonly y: number;
}
Ha egy objektum szó végre a felületen, akkor nem lehet felülírni readonlytulajdonság:
let p1: Point = { x: 10, y: 20 };
p1.x = 5; // error!
De amikor egy osztály megvalósítja az interfészt, nincs mód, hogy elkerüljük felülírja.
class PointClassBroken implements Point {
// these are required in order to implement correctly
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x
this.y = y
}
changeCoordinates(x: number, y: number): void {
this.x = x // no error!
this.y = y // no error!
}
}
Azt hiszem, hogy azért, mert ha újra kijelentik tulajdonságait az osztály definíciója, azok felülírják a tulajdonságok a felület, és már nem csak olvasható.
Rögzíteni, hogy használja readonlya tulajdonságok közvetlenül az osztályt, amely megvalósítja az interfészt
class PointClassFixed implements Point {
readonly x: number;
readonly y: number;
constructor(x: number, y: number) {
this.x = x
this.y = y
}
changeCoordinates(x: number, y: number): void {
this.x = x // error!
this.y = y // error!
}
}
Lásd magad a játszótéren .