Читать книгу Angular - Manfred Steyer - Страница 44

Getter und Setter

Оглавление

Nicht alle Felder werden direkt in Objekten gespeichert. Manche müssen auch bei Bedarf berechnet oder von anderen benachbarten Klassen hergeleitet werden. Hierzu stellt TypeScript Getter und Setter zur Verfügung. Das sind Methoden, die einen Wert ermitteln, etwa durch Berechnen, oder einen Wert aktualisieren. Der Clou daran ist, dass solche Methoden für den Aufrufer wie normale Eigenschaften aussehen. Ein Beispiel dafür bietet die Klasse ScheduledFlight in Beispiel 2-22. Sie definiert einen Getter sowie einen Setter unixDate, der die Flugzeit als Millisekunden seit dem 1.1.1970 repräsentiert. Diese Information leitet sich aus dem Feld date ab.

Beispiel 2-22: Klasse mit Getter und Setter

// src/app/ts/scheduled-flight.ts

import { Flight } from '../flight';

export class ScheduledFlight implements Flight {

id: number = 0;

from: string = '';

to: string = '';

date: string = '';

distance: number = 0;

get unixDate(): number {

return new Date(this.date).getTime();

}

set unixDate(time: number) {

const date = new Date(time);

this.date = date.toISOString();

}

calcPrice(): number {

return this.distance / 3;

}

}

Achten Sie darauf, dass nach den Schlüsselwörtern get und set ein Leerzeichen steht. Im Gegensatz zu Java ist get bzw. set also nicht Teil des Namens, sondern zeigt nur an, dass jetzt eine Methode folgt, die als Getter bzw. Setter fungieren soll.

Für den Aufrufer gibt es keinen erkennbaren Unterschied zwischen herkömmlichen Feldern und solchen, die über Getter und Setter definiert werden: Er setzt einfach die Eigenschaft unixDate oder liest sie aus (siehe Beispiel 2-23).

Beispiel 2-23: ScheduledFlight instanziieren

// src/app/ts/demo.ts

import { ScheduledFlight } from './scheduled-flight';

[...]

const nextFlight = new ScheduledFlight();

nextFlight.date = '2018-12-24';

console.debug('unix-date', nextFlight.unixDate);

nextFlight.unixDate = 1000;

console.debug('unix-date', nextFlight.date);

Angular

Подняться наверх