Zum Inhalt springen
≈ 1 minNeuTypeScriptFrontendCode-Qualität

Best Practices für TypeScript

TypeScript entfaltet seinen Nutzen erst mit strengen Einstellungen – strict mode, kein any, präzise Typen und klare Konventionen, auch in Angular.

In 30 Sekunden

  1. 01

    Setze strict auf true in der tsconfig – ohne strenge Prüfung verschenkst du den halben Nutzen.

  2. 02

    Nutze unknown statt any und grenze den Typ per Narrowing ein.

  3. 03

    Modelliere Zustände mit Union-Typen, damit ungültige Zustände gar nicht erst darstellbar sind.

Die wichtigsten Regeln

strict: true

Aktiviert strictNullChecks, noImplicitAny und mehr. Zusätzlich lohnt sich noUncheckedIndexedAccess.

unknown statt any

Externe Daten (API, JSON) sind unknown, bis sie geprüft sind – z. B. mit Zod oder einem Type Guard.

Union statt Flags

status: 'loading' | 'error' | 'done' statt drei Booleans, die sich widersprechen können.

Kein ! zum Ruhigstellen

Der Non-Null-Operator ! lügt dem Compiler etwas vor. Lieber prüfen oder den Typ korrigieren.

readonly & const

Unveränderliche Daten als readonly bzw. as const markieren – verhindert versehentliche Mutation.

Linter & Formatter

typescript-eslint mit strict-Preset und Prettier in CI und Pre-Commit.

any vs. unknown

Nicht so

const user: any = await res.json();
console.log(user.nmae.toUpperCase()); // Tippfehler, Laufzeitfehler

So

const data: unknown = await res.json();
const user = UserSchema.parse(data); // Zod prüft zur Laufzeit
console.log(user.name.toUpperCase());

Zustände modellieren

Nicht so

interface State {
  loading: boolean;
  error?: string;
  data?: Order[];
}
// loading: true UND error gesetzt?

So

type State =
  | { status: 'loading' }
  | { status: 'error'; error: string }
  | { status: 'done'; data: Order[] };

Merksatz

„Jeder any-Typ ist ein Loch im Sicherheitsnetz – lieber einmal präzise typisieren als später debuggen.“

Selbsttest

Erst selbst überlegen, dann aufklappen.

01Was ist der Unterschied zwischen any und unknown?

Mit any ist alles erlaubt, der Compiler prüft nichts mehr. Mit unknown muss man den Typ erst prüfen (typeof, instanceof, Type Guard), bevor man damit arbeiten darf.

Weiter in Grundlagen

Best Practices für Terraform