Wann du einen Typ schreibst
Jetzt kannst du für jede Variable einen Typ schreiben. Solltest du es tun? Für TypeScript bedeuten let gold: number = 120; und let gold = 120; dasselbe: In beiden ist gold eine number, und gold = "viel"; ist ein Fehler. Die Annotation wiederholt nur, was der Wert 120 schon sagt. Deshalb lassen Programmierer sie meist weg, wenn eine Variable sofort ihren Wert bekommt, und überlassen TypeScript die Ableitung des Typs. Der Code ist kürzer und leichter zu lesen, und wenn du den Wert änderst, musst du nicht den Typ mitändern.
Schreibe den Typ selbst dort, wo der Wert TypeScript nicht sagt, was du meinst. Der häufigste Fall ist eine Variable, die noch keinen Wert hat. Ohne Typ und ohne Wert lässt TypeScript dich alles darin speichern, genau wie JavaScript:
let belohnung;
belohnung = 50;
belohnung = "fünfzig";
console.log(belohnung);Dieses Programm läuft ohne Fehler und gibt fünfzig aus. TypeScript verfolgt nur, was du darin speicherst. Mit einem Typ prüft es jeden Wert, den du speicherst:
let belohnung: number;
belohnung = 50;
belohnung = "fünfzig";main.ts(3,1): error TS2322: Type 'string' is not assignable to type 'number'.Ohne den Typ zeigt sich so ein Fehler erst später, dort, wo das Programm die Variable verwendet, und die Meldung ist schwerer zu verstehen. Angenommen, belohnung bekommt in einem Zweig eines if eine Zahl und im anderen einen Text. Dann meldet gold + belohnung den Fehler Operator '+' cannot be applied to types 'number' and 'string | number'. TypeScript weiß, dass belohnung ein Text oder eine Zahl sein kann (das bedeutet string | number; mehr dazu in der Lektion „Unions und Eingrenzen“), aber es sagt dir nicht, welche Zeile den Text gespeichert hat. Mit let belohnung: number; steht der Fehler in der Zeile mit dem Fehler.
Weitere Stellen, an denen ein Typ nötig ist und die du bald kennenlernst:
- Ein leeres Array: Allein aus
[]kann TypeScript nicht erkennen, was hineinkommt. In der Übung zu Arrays schreibst duconst beute: string[] = [];. - Die Parameter von Funktionen: TypeScript kann sie nicht ableiten, deshalb schreibst du ihre Typen in Lektion 3.
- Eine Variable, die mehr enthalten soll, als ihr erster Wert vermuten lässt, zum Beispiel eine Zahl oder einen Text (die Lektion „Unions und Eingrenzen“).
In diesem Kurs schreiben wir einen Typ dort, wo er nötig ist oder wo er den Code klarer macht, und überlassen TypeScript sonst die Ableitung.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus. TypeScript meldet einen Fehler in der Zeile, die die Belohnung zum Gold addiert, aber der eigentliche Fehler liegt woanders. Gib
belohnungden Typnumberund führe das Programm erneut aus. Jetzt zeigt der Fehler auf die Zeile, die einen Text inbelohnungspeichert. Ein schwaches Monster gibt 20 Gold: Korrigiere die Zeile so, dass sie die Zahl 20 speichert. - 2
Entferne die Annotationen von
heldenName,goldundmonsterStufe: TypeScript leitet aus ihren Werten dieselben Typen ab. Das Programm gibt weiterhinKira hat 140 Gold.aus. - 3
Kira besiegt ein stärkeres Monster: Ändere den Wert von
monsterStufeauf6, sodass das Programm ausgibt:Kira hat 220 Gold.