使用反射元数据访问 class 装饰器参数
Access class decorator argument using reflect-metadata
考虑一个带有一个参数的 class 装饰器:
@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”。如何检索 class 装饰器的参数值?
let order = new Order();
getTableName(order); // "" but expected "Orders"
这是对我有用的方法
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) || '';
}
考虑一个带有一个参数的 class 装饰器:
@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”。如何检索 class 装饰器的参数值?
let order = new Order();
getTableName(order); // "" but expected "Orders"
这是对我有用的方法
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) || '';
}