Freshness und Prüfung überschüssiger Eigenschaften
Erkunden Sie, warum überschüssige Eigenschaften in manchen Kontexten Fehler auslösen.
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 PointPrü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 propertyWarum 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 assignmentTyp-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 errorPrü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 }; // OKReadonly 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 }; // ErrorIndexsignaturen 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 }; // OKOptionale 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' excessPraktische 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 interfaceZusammenfassung: 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.
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
- Mechanismen von Type Widening und Narrowing
- Kontextbezogene Typisierung: Ableitung aus dem Kontext
- Freshness und Prüfung überschüssiger Eigenschaften
- const-Assertions und as const