【问题标题】:Access class decorator argument using reflect-metadata使用反射元数据访问类装饰器参数
【发布时间】:2021-03-25 20:02:51
【问题描述】:

考虑一个带有一个参数的类装饰器:

@TableName("Orders")
export class Order {
 // ...
}

而装饰器定义为:

import "reflect-metadata";

const classDecoratorKey = Symbol.for("custom:TableName");

export function TableName(tableName: string): ClassDecorator {
  return (constructor: Function) => {
    Reflect.defineMetadata(classDecoratorKey, tableName, constructor);
  }
}

export function getTableName(target: any): string {
  return Reflect.getMetadata(classDecoratorKey, target.constructor, "class") || "";
}

我现在希望得到@TableName 值“Orders”。如何检索类装饰器的参数值?

let order = new Order();
getTableName(order); // "" but expected "Orders"

【问题讨论】:

    标签: typescript reflection reflect-metadata


    【解决方案1】:

    这对我有用

    export function TableName(tableName: string): ClassDecorator {
      return (constructor: Function) => {
        Reflect.defineMetadata(classDecoratorKey, tableName, constructor.prototype);
      };
    }
    
    export function getTableName(target: any): string {
      return Reflect.getMetadata(classDecoratorKey, target) || '';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-03
      • 2016-09-27
      • 2011-06-25
      • 2018-06-28
      • 2011-09-22
      • 2020-07-09
      • 1970-01-01
      • 2017-06-12
      相关资源
      最近更新 更多