Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Init(obj: { [key: string]: any }, Class: any) {
- return function(target: any, name: string) {
- Object.defineProperty(target, name, {
- get: () => {
- return new Class(obj[name]);
- },
- });
- };
- }
- class Item {
- item: IItem;
- associatedItems: Item[];
- constructor(item: IItem, ...associatedItems: Item[]) {
- this.item = item;
- this.associatedItems = associatedItems;
- }
- doSomething() {
- return true;
- }
- }
- interface IItem {
- some: string;
- }
- const items: { [K in keyof Items]: IItem } = {
- AIR_PODS: {
- some: 'key',
- },
- BOSE_SPEAKER: {
- some: 'thiing',
- },
- };
- class Items {
- @Init(items, Item)
- AIR_PODS: Item;
- BOSE_SPEAKER: Item;
- }
- const thing = new Items();
- console.log(thing.AIR_PODS.doSomething());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement