27 lines
562 B
TypeScript
27 lines
562 B
TypeScript
const allergenMap = {
|
|
eggs: 1,
|
|
peanuts: 2,
|
|
shellfish: 4,
|
|
strawberries: 8,
|
|
tomatoes: 16,
|
|
chocolate: 32,
|
|
pollen: 64,
|
|
cats: 128,
|
|
} as const
|
|
|
|
type Allergen = keyof typeof allergenMap
|
|
|
|
export class Allergies {
|
|
constructor(private _allergenIndex: number) {}
|
|
|
|
public list(): Allergen[] {
|
|
return Object.entries(allergenMap)
|
|
.filter(([_, weight]) => (this._allergenIndex & weight) !== 0)
|
|
.map(([allergen]) => allergen as Allergen)
|
|
}
|
|
|
|
public allergicTo(allergen: Allergen): boolean {
|
|
return this.list().includes(allergen)
|
|
}
|
|
}
|