枚举类型为装饰器参数

问题描述 投票:1回答:1

是否可以将枚举类型作为参数传递给装饰器函数?

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
            },
        }
    };
}

这里的类型总是未定义的。

typescript enums typescript2.0
1个回答
2
投票

问题是代码的顺序。 如果你这样做:

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;
}

当你尝试将它用于装饰器时,解释器还没有评估枚举。

© www.soinside.com 2019 - 2024. All rights reserved.