20 wiersze
423 B
TypeScript
20 wiersze
423 B
TypeScript
|
export type VocabularyType = {
|
||
|
name: string;
|
||
|
};
|
||
|
|
||
|
export class Vocabulary<T extends VocabularyType> {
|
||
|
readonly itemMap: Map<string, T>;
|
||
|
|
||
|
constructor(readonly items: T[]) {
|
||
|
this.itemMap = new Map(items.map((item) => [item.name, item]));
|
||
|
}
|
||
|
|
||
|
get(name: string): T {
|
||
|
const item = this.itemMap.get(name);
|
||
|
if (!item) {
|
||
|
throw new Error(`Unable to find the item "${name}"!`);
|
||
|
}
|
||
|
return item;
|
||
|
}
|
||
|
}
|