Stammkunden
Der Schmied hat Stammkunden, und einige von ihnen bekommen einen Rabatt: eine Anzahl Goldmünzen weniger bei jedem Auftrag. Sie stehen im neuen Array stammkunden, dessen Elemente den Typ Kunde haben. Nicht jeder Stammkunde hat einen Rabatt, deshalb ist rabatt eine optionale Eigenschaft.
Ein Stammkunde mit Rabatt zahlt den Preis minus den Rabatt, und die Zeile des Auftrags endet mit dem Rabatt in Klammern. Ein Stammkunde ohne Rabatt zahlt den vollen Preis. Auch ein Kunde, der nicht zu den Stammkunden gehört, zahlt den vollen Preis, aber seine Zeile endet mit (neuer Kunde). Die Summe ist jetzt das, was die Kunden wirklich zahlen:
Kira: Schmieden, Pfeilspitzen (Stahl), 30 Gold (Rabatt 5)
Bruno: Reparatur, Streitaxt, 15 Gold (neuer Kunde)
Lena: Schärfen, Dolch, 8 Gold
Bruno: Schmieden, Schild (Bronze), 20 Gold (neuer Kunde)
Summe: 73 GoldKiras Rabatt beträgt 5 Gold, also zahlt sie 30 für ihre Pfeilspitzen. Lena ist Stammkundin ohne Rabatt, und Bruno ist gar kein Stammkunde.
Ein Tipp: Wenn du mit find nach einem Kunden suchst, denk an die Lektion Unions und Narrowing: Es kann sein, dass nichts gefunden wird. TypeScript zwingt dich, diesen Fall zu behandeln, und den fehlenden Rabatt auch.
So schreibst du es:
Anweisungen
- 1
Ändere die Zeilen der Aufträge: Zeige die Rabatte an und markiere die Kunden, die keine Stammkunden sind.
- 2
Gib die Summe aus, die die Kunden zahlen.