TypeScript Academy · Lektion

Freshness und Prüfung überschüssiger Eigenschaften

Erkunden Sie, warum überschüssige Eigenschaften in manchen Kontexten Fehler auslösen.

Lektion 3 von 413 Schritte

Freshness und Prüfung überschüssiger Eigenschaften ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Was ist Freshness?

Freshness ist ein TypeScript-Konzept, bei dem Objekt-Literale an der Stelle ihrer Erstellung als „frisch“ gelten. Für frische Objekte wird eine strenge Prüfung auf überschüssige Eigenschaften durchgeführt, für erweiterte Objekte hingegen nicht.

interface Point { x: number; y: number; }
const p: Point = { x: 1, y: 2, z: 3 }; // Error: 'z' not in Point

Prüfung überschüssiger Eigenschaften in der Praxis

Wenn Sie ein Objekt-Literal direkt einer typisierten Variable zuweisen oder als Funktionsargument übergeben, meldet TypeScript zusätzliche Eigenschaften, die nicht im Zieltyp enthalten sind.

function setPoint(p: { x: number; y: number }) {}
setPoint({ x: 1, y: 2, z: 3 }); // Error: 'z' excess property

Warum es die Prüfung überschüssiger Eigenschaften gibt

Sie erkennt Tippfehler und unbeabsichtigte Eigenschaften in Konfigurationsobjekten — eine häufige Fehlerquelle in JavaScript.

interface Options { timeout: number; retry?: boolean; }
const opts: Options = { timeout: 3000, retrey: true }; // Error — typo!

Wie Freshness verloren geht

Sobald ein Objekt-Literal einer Zwischenvariable zugewiesen wird, ist es nicht mehr „frisch“, und die Prüfung auf überschüssige Eigenschaften wird auf den erweiterten Typ nicht mehr angewendet.

const opts = { timeout: 3000, retry: true, extra: "surprise" };
const o: Options = opts; // No error — freshness lost on assignment

Typ-Assertions umgehen Freshness

Auch die Verwendung von as-Typ-Assertions umgeht die Prüfung auf überschüssige Eigenschaften, wodurch Fehler verborgen werden können.

const o = { timeout: 3000, typo: true } as Options; // No error

Prüfung überschüssiger Eigenschaften mit Intersection-Typen

Intersection-Typen können Prüfungen auf überschüssige Eigenschaften manchmal lockern, weil die zusätzlichen Eigenschaften zu einem der Bestandteile des Intersection-Typs gehören können.

type A = { x: number };
type B = { y: number };
const ab: A & B = { x: 1, y: 2 }; // OK

Readonly und überschüssige Eigenschaften

Die Prüfung auf überschüssige Eigenschaften gilt auch für readonly-Objekttypen — die Regel bezieht sich auf die strukturelle Form, nicht auf die Änderbarkeit.

interface Cfg { readonly host: string; }
const c: Cfg = { host: "localhost", port: 3000 }; // Error

Indexsignaturen und überschüssige Eigenschaften

Das Hinzufügen einer Indexsignatur zu einem Typ erlaubt beliebige zusätzliche Eigenschaften mit String-Schlüsseln und deaktiviert damit effektiv die Prüfung auf überschüssige Eigenschaften für diesen Typ.

interface Flexible { name: string; [key: string]: unknown; }
const f: Flexible = { name: "ts", extra: true }; // OK

Optionale Eigenschaften und Freshness

Optionale Eigenschaften lockern die Prüfung auf überschüssige Eigenschaften nicht. Eine Eigenschaft, die überhaupt nicht aufgeführt ist — auch nicht als optional — wird weiterhin als überschüssig gemeldet.

interface Shape { color?: string; }
const s: Shape = { color: "red", size: 10 }; // Error: 'size' excess

Praktische Muster

Um zusätzliche Konfigurationseigenschaften ohne Fehler durch eine typisierte Schnittstelle zu übergeben, verwenden Sie eine Zwischenvariable oder eine Indexsignatur in der Schnittstelle.

// Option 1: intermediate variable (freshness lost)
const cfg = { timeout: 3000, debugMode: true };
const o: Options = cfg;
// Option 2: index signature in interface

Zusammenfassung: Freshness

Freshness gilt für frische Objekt-Literale und ermöglicht die Prüfung auf überschüssige Eigenschaften zum Zeitpunkt der Zuweisung. Weisen Sie das Objekt einer Zwischenvariable zu oder verwenden Sie eine Indexsignatur, um zusätzliche Eigenschaften zu erlauben.

Schnellüberprüfung

Wann wird die Prüfung auf überschüssige Eigenschaften NICHT angewendet?

Das haben Sie gelernt

Freshness und die Prüfung auf überschüssige Eigenschaften schützen Sie vor Tippfehlern und unbeabsichtigten Eigenschaften in Objekt-Literalen. Wenn Sie verstehen, wann Freshness verloren geht, vermeiden Sie überraschende Typfehler und verborgene Fehler.

Kostenlos starten

Lerne TypeScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
101
Lektionen
352

Häufig gestellte Fragen

Ist die Lektion „Freshness und Prüfung überschüssiger Eigenschaften“ kostenlos?

Ja — der vollständige Text von „Freshness und Prüfung überschüssiger Eigenschaften“ 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 „Freshness und Prüfung überschüssiger Eigenschaften“?

Erkunden Sie, warum überschüssige Eigenschaften in manchen Kontexten Fehler auslösen. 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 3 von 4.

Wie lange dauert die Lektion „Freshness und Prüfung überschüssiger Eigenschaften“?

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. Mechanismen von Type Widening und Narrowing
  2. Kontextbezogene Typisierung: Ableitung aus dem Kontext
  3. Freshness und Prüfung überschüssiger Eigenschaften
  4. const-Assertions und as const
← Zurück zu TypeScript Academy