是否可以将枚举类型作为参数传递给装饰器函数?
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 :(得分:2)
问题在于您的代码顺序 如果您这样做:
console.log("the enum: ", SomeEnum);
export enum SomeEnum { A, B, C}
你会得到:
enum:undefined
在调用装饰器时,你需要在使用它之前放置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;
}
当你尝试将它用于装饰时,解释器还没有评估枚举。