any: Die Prüfung ausschalten
TypeScript hat einen Typ, der jeden Fehler verschwinden lässt: any. Eine Variable vom Typ any kann alles enthalten, und TypeScript erlaubt damit alles: jede Eigenschaft, jede Methode, jede Operation. Es hört einfach auf zu prüfen:
let beute: any = "goldene Krone";
console.log(beute.toUpperCase());
console.log(beute.toUppercase());TypeScript meldet nichts, und das Programm läuft. Es gibt GOLDENE KRONE aus und stürzt dann beim Tippfehler ab:
TypeError: beute.toUppercase is not a functionGenau dieses JavaScript-Verhalten soll TypeScript dich verhindern lassen. Mit let beute: string = "goldene Krone"; oder einfach let beute = "goldene Krone"; würde TypeScript den Tippfehler finden, bevor das Programm läuft: Property 'toUppercase' does not exist on type 'string'. Did you mean 'toUpperCase'?
Und any breitet sich aus. Alles, was du aus einem any-Wert liest, ist ebenfalls any, also prüft TypeScript es auch nicht:
let beute: any = { name: "Goldene Krone" };
const titel = beute.nmae;
console.log(titel.toUpperCase());Wieder kein Fehler von TypeScript, aber wenn das Programm läuft, ist titel gleich undefined, und es stürzt mit TypeError: Cannot read properties of undefined (reading 'toUpperCase') ab.
Warum gibt es any dann überhaupt? Es hilft, wenn ein großes JavaScript-Programm Stück für Stück zu TypeScript wechselt, und du begegnest ihm auch in älterem Code. Es ist auch verlockend, es zu schreiben, wenn dir eine Fehlermeldung im Weg ist: Die Meldung verschwindet, aber der Fehler bleibt und zeigt sich, wenn das Programm läuft. Vermeide also any. Wenn du wirklich nicht weißt, was ein Wert sein wird, gibt es in der Lektion „Unions und Eingrenzen“ eine sichere Alternative: unknown.
Wenn TypeScript any verwenden müsste, ohne dass du es schreibst, sagt es dir das: Meldungen mit den Worten implicitly has … 'any', etwa die für das leere Array in der Übung zu Arrays, bedeuten, dass es den Typ nicht ableiten kann und du ihn schreiben sollst.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus: Es stürzt mit einem
TypeErrorab. Ersetzeanybeischatzdurch den echten Typ,string. TypeScript findet den Fehler jetzt, bevor das Programm läuft: Behebe ihn. Das Programm gibt dannKira findet die GOLDENE KRONEaus, aber Kiras Gold ist ein seltsames120300. - 2
Ersetze
anybeiwertdurchnumber. TypeScript meldet jetzt den nächsten Fehler. Behebe ihn, sodass das Programm ausgibt:Kira findet die GOLDENE KRONE Gold: 420