尝试装饰器,遇到Reflect-metadata有关的问题

clipboard.png
实际代码如下:

class Greeter4 {
    @format("Hello, %s")
    greeting: string;

    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        let formatString = getFormat(this, "greeting");
        return formatString.replace("%s", this.greeting);
    }
}




const formatMetadataKey = Symbol("format");

function format(formatString: string) {
    return Reflect.metadata(formatMetadataKey, formatString);
}

function getFormat(target: any, propertyKey: string) {
    return Reflect.getMetadata(formatMetadataKey, target, propertyKey); //问题出在这里
}


const person3 = new Greeter4('test');

console.log(person3.greet());

请具体解释一下Reflect-metadata的具体作用和相关api,或者是否有中文资料及文档

以上代码运行报出错误

clipboard.png

没有能够取出元数据

阅读 3.9k
1 个回答

请把formatMetadataKey的声明写到代码最上方,这里设置metadata的时候,formatMetadataKey的值还是undefined,自然后面就拿不到具体的metadata了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题