TypeScript verwandelt schwache Ingenieurwesen nicht in starke Ingenieurwesen.
Strikte Typen helfen zwar, aber schlechte Grenzen sowie ungetestete Domäneregeln werden dennoch bereitgestellt – gute Programmierung übertrifft die Syntax.
Typsicherheit ist nicht dasselbe wie Softwarequalität
TypeScript verhindert eine wichtige Kategorie von Fehlern. Es schützt jedoch nicht vor schwachem Design, unklaren Domänenmodellen oder nachlässigem Verhalten während der Ausführung.
function transferMoney(
from: Account,
to: Account,
amount: number
) {
from.balance -= amount;
to.balance += amount;
}
const user: any = fetchUser();
user.address.street.foo.bar();
interface User {}
interface UserResponse {}interface UserData {}interface UserDTO {}interface UserPayload {}interface UserState {}
TypeScript versteht keine Geschäftslogik
Kompilatoren können nicht beurteilen, ob eine Regel zur Anrechnung von Rabatten fair ist. Typen erfassen Strukturen; Menschen müssen weiterhin Tests und Invarianten bereitstellen.
Der gefährlichste Typ ist any
any deaktiviert den Nutzen des Kompilators. Verwenden Sie lieber unknown in Kombination mit Einschränkungen oder präzise Union-Typen.
Schwere Typen können eine schwache Architektur nicht retten
Schichtung, Grenzen und Module sind wichtiger als das Verzieren einer unstrukturierten Architektur mit Schnittstellen.
Typen beschreiben die Realität
Modelle sollten zum jeweiligen Domänenbereich passen. Falsche Angaben, bei denen behauptet wird, ein Wert sei nicht null, obwohl die API null zurückgibt, erzeugen eine falsche Sicherheit.
Schlechte Gewohnheiten breiten sich in TypeScript schneller aus
Kopieren und Einfügen von DTOs, überdimensionierte „Gott-Typen“ sowie übermäßige Verwendung von Assertionen verbreiten sich schnell unter dem Deckmantel der „Typisierung“.
Die besten TypeScript-Entwickler waren bereits sorgfältige JavaScript-Entwickler
Disziplin geht der Syntax voraus. TypeScript verstärkt Gewohnheiten – sowohl gute als auch schlechte.
Nutzen Sie den Compiler als Partner
Stellen Sie die Strenge ein, beheben Sie die Ursachen und lassen Sie Fehler bei der Refaktorierung als Leitfaden dienen, anstatt sie zu ignorieren.
Die eigentliche Verbesserung ist nicht TypeScript
Die Verbesserung liegt in klareren Modulen, getesteten Domänenregeln und ehrlichen Typen. TypeScript ist nur ein Werkzeug für diese Arbeit – kein Ersatz dafür.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Koppeln Sie DTOs an den Grenzen mit Mappern zusammen – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.
Aktivieren Sie noImplicitAny und strictNullChecks, bevor Sie über Style Guides diskutieren; diese beiden Flags finden mehr echte Fehler als Namenskonventionen.
Kombinieren Sie DTOs an den Schnittstellen mit Mappern – lassen Sie keine Persistenzstrukturen in UI-Komponenten durchsickern, nur weil beide „typisiert“ sind.