mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
Refactor: use union type in ItemName type to implement Item interface
This commit is contained in:
parent
def709f2e1
commit
12e7f8e82e
@ -1,19 +1,22 @@
|
|||||||
import { AgedBrie, Passes, Surfras } from "./itemClasses";
|
import { Item } from "./itemClasses";
|
||||||
type ItemClasses = AgedBrie[] | Surfras[] | Passes[];
|
|
||||||
|
interface ItemForSale extends Item {
|
||||||
|
handleQuality: () => void;
|
||||||
|
handleSellIn: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
export class GildedRose {
|
export class GildedRose {
|
||||||
items: ItemClasses;
|
items: ItemForSale[];
|
||||||
constructor(items = [] as ItemClasses) {
|
constructor(items = [] as ItemForSale[]) {
|
||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateQuality() {
|
updateQuality() {
|
||||||
const updatedItems = this.items.map((item) => {
|
return this.items.map((item) => {
|
||||||
item.handleSellIn();
|
item.handleSellIn();
|
||||||
item.handleQuality();
|
item.handleQuality();
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
return updatedItems as ItemClasses;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,15 @@
|
|||||||
export class Item {
|
export type ItemName =
|
||||||
name: string;
|
| "Aged Brie"
|
||||||
sellIn: number;
|
| "Backstage passes to a TAFKAL80ETC concert"
|
||||||
quality: number;
|
| "Conjured Mana Cake"
|
||||||
|
| "Sulfuras, Hand of Ragnaros";
|
||||||
|
|
||||||
constructor(name, sellIn, quality) {
|
export class Item {
|
||||||
|
name;
|
||||||
|
sellIn;
|
||||||
|
quality;
|
||||||
|
|
||||||
|
constructor(name: ItemName, sellIn: number, quality: number) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.sellIn = sellIn;
|
this.sellIn = sellIn;
|
||||||
this.quality = quality;
|
this.quality = quality;
|
||||||
|
|||||||
BIN
sql/structure/.DS_Store
vendored
Normal file
BIN
sql/structure/.DS_Store
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user