是否可以将枚举类型作为参数传递给装饰器函数?
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
},
}
};
}
这里的类型总是未定义的。
问题是代码的顺序。 如果你这样做:
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;
}
当你尝试将它用于装饰器时,解释器还没有评估枚举。