Zusammenfassung
In dieser Lektion hast du gelernt:
- TypeScript leitet den Typ eines Objekts aus seinen Eigenschaften ab:
{ name: string; leben: number; }. Du kannst keine Eigenschaft hinzufügen, die nicht im Typ steht (Property 'gold' does not exist on type ...), also gib einem Objekt beim Erstellen alle seine Eigenschaften. - Ein Objekttyp kann als Annotation geschrieben werden,
let ziel: { name: string; leben: number };, oder mit einem Typalias benannt werden:type Held = { name: string; leben: number };. Verwende dannHeldfür Variablen, Parameter, Rückgabetypen und Arrays (Held[]). - In einem Objektliteral ergibt eine fehlende Eigenschaft TS2741 (
Property 'preis' is missing in type ...), eine überflüssige TS2353 und ein Tippfehler TS2561 mitDid you mean to write 'preis'?. - Eine optionale Eigenschaft hat ein Fragezeichen,
spitzname?: string. Sie darf fehlen, ihr Typ iststring | undefined, und sie muss vor der Verwendung geprüft werden. - Eine
readonly-Eigenschaft kann nach dem Erstellen des Objekts nicht mehr geändert werden:Cannot assign to 'name' because it is a read-only property.Anders alsconstschützt sie eine Eigenschaft, nicht eine Variable. - Auch ein Interface beschreibt ein Objekt:
interface Monster { name: string; leben: number }.interface Endgegner extends Monster { phase: number }fügt Eigenschaften hinzu, und einEndgegnerkann überall verwendet werden, wo einMonstergebraucht wird. - Eine Eigenschaft kann ein weiteres Objekt enthalten:
position: Position. Innere Typen mit eigenem Namen machen die Typen und Fehlermeldungen kürzer. - Mit
Gegenstand[]wird jedes Element des Arrays geprüft, und infor...ofist jedergegenstandeinGegenstand. - In Funktionen sind Objekttypen Parametertypen (
function trainiere(monster: Monster): void) und Rückgabetypen (function erzeugeMonster(name: string): Monster). Eine Funktion, die eine Eigenschaft ändert, ändert genau das Objekt, das du ihr übergeben hast, nicht eine Kopie.
In der nächsten Lektion, Unions und Eingrenzen, lernst du Typen kennen, die mehrere Arten von Werten zulassen, wie string | number, oder ein Ziel, das null sein kann, und du siehst, wie TypeScript deinen Bedingungen folgt, um zu wissen, welchen Wert du hast.
So schreibst du es:
Anweisungen
- 1
Zeit zum Üben. Erstelle ein Interface
Auftragmit einer schreibgeschützten Eigenschaftid(einenumber), einemtitel(einstring), einerbelohnung(einenumber) und einer optionalennotiz(einstring). - 2
Erstelle ein Array
auftraegevom TypAuftrag[]mit drei Aufträgen: ID 1, „Wölfe im Wald“, 50 Gold; ID 2, „Die verlorene Krone“, 120 Gold, mit der Notiz"frag den Müller"; ID 3, „Die Goblinbrücke“, 30 Gold. Schreibe eine FunktionbeschreibeAuftrag, die einenAuftragbekommt und seine Zeile zurückgibt; wenn der Auftrag eine Notiz hat, steht die Notiz am Ende in Klammern. Gib mit einerfor...of-Schleife jeden Auftrag aus:#1 Wölfe im Wald: 50 Gold #2 Die verlorene Krone: 120 Gold (frag den Müller) #3 Die Goblinbrücke: 30 Gold - 3
Schreibe eine Funktion
gesamtbelohnung, die einAuftrag[]bekommt und die Summe der Belohnungen zurückgibt. Gib aus:Gesamtbelohnung: 200 Gold