0Pricing
TypeScript Academy · Lektion

Readonly-Arrays und unveränderliche Daten

Verwenden Sie ReadonlyArray, um versehentliche Änderungen zu verhindern.

Readonly-Arrays und unveränderliche Daten ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

Veränderliche Arrays können versehentlich an jeder Stelle Ihres Codes geändert werden. TypeScripts ReadonlyArray und der readonly-Modifizierer helfen Ihnen, Unveränderlichkeit durchzusetzen.

Der readonly-Modifizierer für Arrays

Fügen Sie den Modifizierer `readonly` vor dem Array-Typ ein, um Änderungen zu verhindern. Das Array kann gelesen, aber nicht verändert werden.
const ids: readonly number[] = [1, 2, 3];
// ids.push(4);   // Error
// ids[0] = 99;   // Error
console.log(ids[0]); // OK — reading is fine

Die generische Form ReadonlyArray<T>

`ReadonlyArray` ist das generische Äquivalent zu `readonly T[]`. Beide verhindern push, pop, splice und Zuweisungen über einen Index.
const names: ReadonlyArray<string> = ['Alice', 'Bob'];
// names.push('Charlie'); // Error

Readonly-Arrays aus Funktionen zurückgeben

Geben Sie aus Funktionen Readonly-Arrays zurück, um Aufrufern zu signalisieren, dass das Ergebnis nicht verändert werden sollte.
function getConfig(): readonly string[] {
  return ['host', 'port', 'db'];
}

Unveränderliche Funktionsparameter

Kennzeichnen Sie Array-Parameter als readonly, damit die Funktion das Array des Aufrufers nicht verändern kann.
function sum(nums: readonly number[]): number {
  return nums.reduce((a, b) => a + b, 0);
  // nums.push(99); // Error inside function
}

as const für Literal-Arrays

Die Assertion `as const` macht ein Array unveränderlich und leitet einen Tupeltyp mit Literalelementtypen statt verbreiterter Typen ab.
const colors = ['red', 'green', 'blue'] as const;
// type: readonly ['red', 'green', 'blue']
// colors.push('yellow'); // Error

Readonly erzeugt kein Deep-Freeze

`readonly` verhindert nur, dass die Array-Referenz verändert wird. Wenn die Elemente Objekte sind, können deren Eigenschaften weiterhin geändert werden.
const users: readonly { name: string }[] = [{ name: 'Alice' }];
// users.push({}); // Error
users[0].name = 'Bob'; // Allowed — object itself is mutable

Tiefgreifende Unveränderlichkeit mit Readonly<T>

Für tiefgreifende Unveränderlichkeit von Objekten kombinieren Sie ReadonlyArray mit Readonly für die Elemente. Oder verwenden Sie eine Bibliothek wie immer.
type ImmutableUser = Readonly<{ name: string; scores: readonly number[] }>;
const u: ImmutableUser = { name: 'Alice', scores: [90, 85] };
// u.name = 'Bob';       // Error
// u.scores.push(100);  // Error

Zuweisung von veränderlich zu readonly

Ein readonly-Array kann einem veränderlichen Array-Typ NICHT zugewiesen werden. Dadurch wird verhindert, dass ein unveränderliches Array versehentlich dort übergeben wird, wo Änderungen erwartet werden.
const ro: readonly number[] = [1, 2];
const mutable: number[] = ro; // Error!

Wann Sie Readonly-Arrays verwenden sollten

Verwenden Sie readonly-Arrays für Konfigurationsobjekte, Konstanten, Funktionsparameter, die Sie nicht verändern wollen, und Rückgabewerte reiner Funktionen.

Spread erzeugt ein neues veränderliches Array

Wenn Sie ein readonly-Array in ein neues Array-Literal spreaden, wird eine veränderliche Kopie erstellt. Das ist ein sauberes Muster, um Änderungen ohne Mutation vorzunehmen.
const base: readonly number[] = [1, 2, 3];
const extended: number[] = [...base, 4]; // new mutable array

Schnelltest

Welche Operation ist bei einem `readonly number[]` in TypeScript NICHT zulässig?

Zusammenfassung

Verwenden Sie `readonly T[]` oder `ReadonlyArray`, um Änderungen an Arrays zu verhindern. Verwenden Sie `as const` für konstante Literal-Arrays. Durch Spread entsteht eine veränderliche Kopie, wenn Sie ein readonly-Array erweitern müssen.

Häufig gestellte Fragen

Ist die Lektion „Readonly-Arrays und unveränderliche Daten“ kostenlos?

Ja — der vollständige Text von „Readonly-Arrays und unveränderliche Daten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Readonly-Arrays und unveränderliche Daten“?

Verwenden Sie ReadonlyArray, um versehentliche Änderungen zu verhindern. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Readonly-Arrays und unveränderliche Daten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Typisierte Arrays: T[] und Array
  2. Readonly-Arrays und unveränderliche Daten
  3. Tupel: typisierte Arrays fester Länge
  4. Enums: numerische und String-Konstanten
← Zurück zu TypeScript Academy