Typen verschwinden
Wenn du auf Ausführen klickst, läuft eigentlich kein TypeScript, sondern JavaScript. Der Compiler prüft zuerst die Typen, dann entfernt er sie, und das übrig gebliebene JavaScript läuft. Sieh dir dieses Programm an. Die : string und : number nach den Namen der Variablen sind von Hand geschriebene Typen, sogenannte Typannotationen. Ab der nächsten Lektion schreibst du sie selbst.
let heldenName: string = "Kira";
let pfeile: number = 20;
console.log(heldenName + " hat " + pfeile + " Pfeile.");Der Compiler macht daraus dieses JavaScript:
let heldenName = "Kira";
let pfeile = 20;
console.log(heldenName + " hat " + pfeile + " Pfeile.");Beide geben aus:
Kira hat 20 Pfeile.Die Typen sind nur für die Prüfung da. Wenn das Programm läuft, sind sie verschwunden, und das Programm tut genau das, was dasselbe JavaScript täte. TypeScript ändert nicht, wie dein Code arbeitet, deshalb gilt alles, was du über JavaScript weißt, weiterhin, auch seine Überraschungen:
console.log("5" + 3);
console.log(0.1 + 0.2);Das gibt aus:
53
0.30000000000000004Warum meldet TypeScript "5" + 3 nicht als Fehler? Weil es gültiges und sehr verbreitetes JavaScript ist, einen Text und eine Zahl mit + zu verbinden: So baust du Nachrichten wie "Gold: " + gold. TypeScript meldet, was mit ziemlicher Sicherheit ein Fehler ist, aber es verbietet nicht gewöhnliches JavaScript. Und 0.30000000000000004 ist die winzige Ungenauigkeit von Dezimalzahlen, die du aus dem JavaScript-Kurs kennst. Auch das kann TypeScript nicht ändern.
TypeScript weiß allerdings, dass "5" + 3 einen Text ergibt. Wenn du versuchst, so einen Text in einer Variablen für Zahlen zu speichern, meldet es einen Fehler:
let pfeile = 20;
pfeile = pfeile + "5";main.ts(2,1): error TS2322: Type 'string' is not assignable to type 'number'.Hier schützt dich der Typ sogar vor dem +. Aber wenn eine Variable von Anfang an einen Text enthält, ergibt Text plus Zahl wieder einen Text, alles passt, und TypeScript hat nichts zu melden. Das Programm verbindet dann, statt zu addieren, genau wie JavaScript es täte. Das Programm im Editor hat zwei solche Fehler.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus. Es gibt
Pfeile: 205aus, und TypeScript hat keinen Fehler gemeldet:pfeileenthält den Text"20", und ein Text plus eine Zahl ist ein Text. Ändere den ersten Wert vonpfeilein eine Zahl, sodass das Programm ausgibt:Pfeile: 25 - 2
Der zweite Fehler: Nach der Belohnung hat Kira
12030Gold. Behebe ihn auf dieselbe Weise, sodass das Programm ausgibt:Pfeile: 25 Gold: 150