Lass TypeScript die Typen per Inferenz selbst erkennen und verstehe, warum unknown dem gefährlichen any überlegen ist.
Diese Lektion in Kodokon öffnenGute Nachricht: Du musst nicht jede Variable annotieren. Dank der Typinferenz erkennt TypeScript den Typ einer Variable anhand des Werts, den du ihr gibst. let city = "Lyon" zu schreiben genügt: TypeScript weiß, dass city ein string ist, und schützt sie, als hättest du sie annotiert.
let city = "Lyon"; // inferred type: string
let count = 3; // inferred type: number
count = count + 1; // accepted
// city = 42; -> error: city is still a stringDer Typ any bedeutet "irgendetwas". Eine any-Variable entzieht sich allen Prüfungen: TypeScript akzeptiert alles, ohne nachzusehen. Das ist, als würdest du den Sicherheitsgurt abnehmen: Der Code kompiliert, aber die Fehler kommen zur Laufzeit zurück - genau das, was TypeScript verhindern sollte.
let data: any = "hello";
data = 42; // accepted without complaint
// Compiles, but crashes at runtime:
// data.toUpperCase() does not exist on a number!Für einen Wert, dessen Typ wirklich unbekannt ist (eine Serverantwort, eine Nutzereingabe), nimm lieber unknown. Wie any akzeptiert es jeden Wert, aber es zwingt dich, den Typ zu prüfen (zum Beispiel mit typeof), bevor du ihn verwendest. Die Sicherheit bleibt also erhalten.
let value: unknown = "hello";
// console.log(value.toUpperCase()); -> rejected!
if (typeof value === "string") {
console.log(value.toUpperCase()); // "HELLO"
}