2016-11-08 3 views
0

Возможно ли передать тип перечисления в качестве параметра в функцию декоратора?Typcript: тип перечисления в качестве параметра декоратора

export class A { 
    @AsEnum(SomeEnum) 
    name: string; 
} 

export enum SomeEnum { A, B, C} 

export function AsEnum(type): any { 
    return (target, propert) => { 
     return { 
      get: function(): Object { 
       return type; // type is undefined 
      }, 
     } 
    }; 
} 

Здесь тип всегда не определен.

ответ

0

Проблема заключается в порядке вашего кода.
Если вы будете делать:

console.log("the enum: ", SomeEnum); 
export enum SomeEnum { A, B, C} 

Вы получите:

перечисление: неопределенные

Вам нужно разместить декларацию SomeEnum перед ее использованием при вызове декоратор:

function AsEnum(type): any { 
    return (target, propert) => { 
     return { 
      get: function(): Object { 
       return type; // type is undefined 
      }, 
     } 
    }; 
} 

enum SomeEnum { A, B, C} 

class A { 
    @AsEnum(SomeEnum) 
    name: string; 
} 

Интерпретатор еще не оценил перечисление, когда вы пытаетесь использовать его для декоратора.

+0

много thx, это помогает –

Смежные вопросы