Angular. Ferdinand Malcher

Чтение книги онлайн.

Читать онлайн книгу Angular - Ferdinand Malcher страница 23

Автор:
Серия:
Издательство:
Angular - Ferdinand Malcher

Скачать книгу

increaseBy;

      return this.age;

       }

      }

       Rückgabetyp void

      Der Typ void sagt aus, dass eine Methode keinen Rückgabewert besitzt. Damit hat void in etwa die gleiche Bedeutung wie in vielen weiteren Programmiersprachen wie C# oder Java.

      class User {

      logout(): void {

      // ...

      }

      }

      Listing 4–4 Methoden ohne Rückgabewert

       Getter und Setter

      In der objektorientierten Programmierung kennt man das Prinzip der Getter- und Setter-Methoden. Diese Methoden haben die Aufgabe, Eigenschaften des Objekts zu lesen bzw. zu setzen. Bei Bedarf kann zusätzlich einfache Logik in den Methoden implementiert werden. ECMAScript 2015 bietet ein ähnliches Konstrukt: Die Schlüsselwörter get und set verstecken die Methoden, indem eine Eigenschaft an diese gebunden wird. Wird die Eigenschaft gelesen, so wird die dazugehörige Getter-Methode aufgerufen. Beim Befüllen der Eigenschaft mit Werten wird die dazugehörige Setter-Methode aufgerufen.

      Praktisch benötigen wir Getter und Setter relativ selten, denn üblicherweise greifen wir immer direkt auf die Eigenschaften einer Klasse zu. Wollen wir allerdings beim Zugriff eine Berechnung durchführen und auf einen Methodenaufruf verzichten, so eignen sich Getter und Setter gut, wie das folgende Beispiel zeigt:

      class User {

      firstname: string;

      lastname: string;

      get fullname(): string {

      return this.firstname + ' ' + this.lastname;

      }

      set fullname(name: string) {

      const parts = name.split(' ');

      this.firstname = parts[0];

      this.lastname = parts[1];

      }

      }

      const user = new User();

      user.fullname = 'Erika Mustermann';

      console.log(user.fullname); // Erika Mustermann

      console.log(user); // { firstname: 'Erika', lastname: 'Mustermann' }

      Listing 4–5 Klasse mit Getter- und Setter-Methoden

       Konstruktoren

      Der Konstruktor ist eine besondere Methode, die bei der Instanziierung einer Klasse aufgerufen wird. Er muss immer den Namen constructor() tragen. Der Konstruktor eignet sich dazu, Werte zu empfangen, die für die spätere Verwendung benötigt werden. Solche Werte speichern wir meist in gleichnamigen Propertys der Klasse ab.

      private id: number;

       constructor(id: number) {

       this.id = id;

       }

      }

      const myUser = new User(3);

      Listing 4–6 Klasse mit Konstruktor

       Kurzschreibweise für den Konstruktor

      TypeScript bietet für diese Syntax eine Kurzschreibweise. Wenn wir in der Methodensignatur des Konstruktors für das Argument einen Zugriffsmodifizierer wie public oder private verwenden, so wird das zugehörige Property automatisch deklariert und initialisiert. Das folgende Codebeispiel führt zum selben Ergebnis wie in Listing 4–6 – ist aber wesentlich kürzer.

      class User {

      constructor(private id: number) {}

      }

      Listing 4–7 Konstruktor – vereinfachte Initialisierung von Eigenschaften

       Einschränkung: Nur ein Konstruktor pro Klasse

      In TypeScript ist nur ein Konstruktor pro Klasse zugelassen. Es ist also nicht möglich, wie in Java oder C# einen Konstruktor mit unterschiedlichen Signaturen anzulegen.

       Vererbung

      Die Funktionalität einer Klasse kann auf andere Klassen übertragen werden. Dieses Konzept kommt aus der objektorientierten Programmierung und heißt Vererbung. Mit dem Schlüsselwort extends kann eine Klasse von einer anderen erben. Am Beispiel der Klasse User wird die Spezifizierung PowerUser erstellt.

      class PowerUser extends User {

      constructor(id: string, power: number) {

       super(id);

      }

      }

      Listing 4–8 Vererbung

      Mit super() kann der Konstruktor der Basisklasse ausgeführt werden. Wird eine Klasse von einer anderen abgeleitet, so können auch Methoden der Basisklasse überschrieben werden. Wird eine abgeleitete Klasse instanziiert, so erhält man von außen auch Zugriff auf Eigenschaften und Methoden der übergeordneten Klassen (sofern diese nicht als private oder protected deklariert wurden).

       4.5Interfaces

       Format eines Konstrukts definieren

      Um die Typisierung in unserem Programmcode konsequent umzusetzen, stellt TypeScript sogenannte Interfaces bereit. Interfaces dienen dazu, die Struktur eines Objekts grundsätzlich zu definieren. Wir können explizit bestimmen, welche Teile enthalten sein müssen und welche Typen sie besitzen sollen. Optionale Eigenschaften werden durch ein Fragezeichen-Symbol gekennzeichnet. Im nachfolgenden Beispiel sehen wir, dass das Interface die Angabe eines Vornamens und Nachnamens erfordert.

Скачать книгу