ProgrammierungFrontend Entwickler

Wie funktioniert der Parameter für eine strikte Überprüfung von null und undefined — strictNullChecks in TypeScript? Wie beeinflusst seine Aktivierung die alltägliche Programmierung?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort

Der Parameter strictNullChecks bestimmt, ob TypeScript null und undefined als separate Typen betrachtet oder nicht. Wenn der Parameter deaktiviert ist (Standard bis Version 2.0), können Variablen jeden Typs Werte null und undefined ohne Kompilierungsfehler annehmen. Wenn er aktiviert ist (strictNullChecks: true), gelten diese Werte als inkompatibel mit anderen Typen, es sei denn, dies wird ausdrücklich angegeben.

Beispiel:

// strictNullChecks: false let name: string = null; // OK // strictNullChecks: true let title: string = null; // Fehler! let title2: string | null = null; // OK, explizite Typenkombination

Die Aktivierung der strikten Überprüfung hilft, Fehler in den frühen Entwicklungsphasen zu vermeiden, wenn Funktionen/Methoden nicht mit der Möglichkeit rechnen, null oder undefined zu erhalten.

Fangfrage

Kann man einer Variablen vom Typ number den Wert undefined zuweisen, wenn strictNullChecks aktiviert ist?

Antwort: Nein, wenn strictNullChecks aktiviert ist, kann einer Variablen vom Typ number kein undefined zugewiesen werden — nur, wenn der Typ ausdrücklich als number | undefined deklariert wird.

Beispiel:

let count: number = undefined; // TS Fehler bei strictNullChecks: true let count2: number | undefined = undefined; // OK

Beispiele für reale Fehler aufgrund mangelnden Wissens über die Feinheiten des Themas.


Geschichte

In einem großen node.js-Projekt haben die Entwickler die strikte Überprüfung von null/undefined deaktiviert, um die Migration zu erleichtern. Ein Jahr nach dem Start gab eine der API-Funktionen undefined anstelle eines numerischen Wertes zurück. Der Client-Code war darauf nicht vorbereitet, weshalb die Anwendung auf der Benutzerseite bei einer einfachen Berechnung response.count + 1 katastrophal abstürzte.


Geschichte

In einem E-Commerce-Projekt kam die Produktkollektion als null vom Server, und nicht als []. Die UI-Komponente machte ein Map über diese Produkte und rief bei jedem eine Eigenschaft auf – es trat ein Renderfehler auf. Die Aktivierung von strictNullChecks hob sofort fast 40 ähnliche Stellen hervor.


Geschichte

In einer großen Bibliothek stieg im Laufe der Zeit die Anzahl der „zulässigen“ Werte für einige Props der Component API auf string | null | undefined. Dies führte zu einer Vielzahl von unbehandelten Situationen. Nach der Aktivierung von strictNullChecks konnten nicht offensichtliche Bugs mit Abstürzen der Benutzeroberfläche bei speziellen Konfigurationen erkannt werden.