Refactor: use union type in ItemName type to implement Item interface

This commit is contained in:
Gayun00 2023-10-18 23:24:16 +09:00
parent def709f2e1
commit 12e7f8e82e
4 changed files with 20 additions and 11 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -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;
} }
} }

View File

@ -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

Binary file not shown.