Direkt zum Hauptinhalt springen
eLearner.app
Modul 1 · Lektion 2 von 22/14 im Kurs~10 min
Lektionen des Moduls (2/2)

Arrays und Tupel

In JavaScript können Arrays jeden beliebigen Elementtyp enthalten und dynamisch wachsen oder schrumpfen. TypeScript fügt eine statische Typprüfung hinzu, um sicherzustellen, dass die Kollektionen homogen bleiben oder einer festen Typstruktur entsprechen.


Arrays (Homogene Kollektionen)

In TypeScript gibt es zwei äquivalente Möglichkeiten, den Typ eines Arrays zu definieren, das Elemente desselben Typs enthält:

  1. Verwenden des Elementtyps gefolgt von eckigen Klammern ([]):

    TS
    const numbers: number[] = [1, 2, 3];
    const strings: string[] = ['a', 'b', 'c'];
  2. Verwenden des generischen Typs Array<T>:

    TS
    const numbers: Array<number> = [1, 2, 3];

Beide Schreibweisen sind vollkommen gültig, aber die erste (typ[]) ist die konventionelle und in fast allen Projekten gebräuchlichste. Wenn Sie versuchen, einen ungültigen Wert einzufügen (z. B. numbers.push("hello") in ein Array vom Typ number[]), gibt TypeScript einen Compilerfehler aus.


Tupel (Strukturen mit fester Größe)

Ein Tupel ist eine spezielle Art von Array, das eine feste Anzahl von Elementen hat und bei dem jedes Element einen vordefinierten spezifischen Typ basierend auf seiner genauen Position hat.

Wenn wir beispielsweise eine HTTP-Antwort speichern möchten, die aus einem Statuscode (Zahl) und einer Nachricht (String) besteht:

TS
const response: [number, string] = [200, 'OK'];

In diesem Fall:

  • Das erste Element (response[0]) muss eine number sein.
  • Das zweite Element (response[1]) muss ein string sein.
  • Das Array muss mit genau 2 Elementen initialisiert werden.

Schreibgeschützte Tupel (readonly)

Ein wichtiges Detail bei Tupeln in TypeScript ist, dass sie zur Laufzeit normale JavaScript-Arrays sind. Dies bedeutet, dass Methoden wie .push() oder .pop() technisch verfügbar sind und die Länge des Tupels verändern könnten, wodurch die Typprüfungen teilweise umgangen werden.

Um dieses Verhalten zu verhindern und echte Unveränderlichkeit zu garantieren, können wir den Modifikator readonly verwenden:

TS
const point: readonly [number, number] = [10, 20];
// point.push(30); // Errore a tempo di compilazione!

Probier es aus

Esercizio 1: Array von Zahlen

Übung#ts.m1.l2.e1
Versuche: 0Wird geladen…

Deklariere ein Array namens scores, das nur Zahlen enthält und mit den Werten 90, 85 und 95 initialisiert ist. Verwende die explizite Typannotation für das Array. Verwende nicht den Typ any.

Editor wird geladen…
Hinweis anzeigen

Verwende die Syntax const scores: number[] = ... oder Array<number>.

Lösung nach 3 Versuchen verfügbar

Esercizio 2: Tupel 3D-Koordinaten

Übung#ts.m1.l2.e2
Versuche: 0Wird geladen…

Deklariere ein Tupel namens point, das eine 3D-Koordinate (drei Zahlen für X, Y, Z) darstellt und mit den Werten 10, 20, 30 initialisiert ist. Verwende die explizite Typannotation.

Editor wird geladen…
Hinweis anzeigen

Der Typ des Tupels muss [number, number, number] sein.

Lösung nach 3 Versuchen verfügbar

Esercizio 3: Tupel Standortinformationen

Übung#ts.m1.l2.e3
Versuche: 0Wird geladen…

Deklariere ein Tupel namens locationInfo, das eine geografische Koordinate mit ihrem Namen darstellt. Es muss enthalten: Breitengrad (Zahl), Längengrad (Zahl) und den Namen der Stadt (String). Initialisiere es mit den Werten 41.9028, 12.4964 und 'Rome'.

Editor wird geladen…
Hinweis anzeigen

Verwende die Syntax zur Definition eines Tupels mit drei Elementen: [number, number, string].

Lösung nach 3 Versuchen verfügbar

Esercizio 4: Tupel Protokollzeile

Übung#ts.m1.l2.e4
Versuche: 0Wird geladen…

Deklariere ein Tupel namens logEntry, das eine Protokollzeile (Log-Eintrag) darstellt. Es muss der Reihe nach enthalten: einen Zeitstempel (Zahl), eine Dringlichkeitsstufe (String) und eine Fehlermeldung (String). Initialisiere es mit dem Zeitstempel 1716300000, der Stufe 'INFO' und der Nachricht 'Application started'.

Editor wird geladen…
Hinweis anzeigen

Verwende die Syntax zur Definition eines Tupels aus drei Elementen: [number, string, string] und weise die angegebenen Werte zu.

Lösung nach 3 Versuchen verfügbar