我想使用TypeScript将NPM中的reflect-metadata包集成到Aurelia CLI项目中,但我找不到任何有关如何执行此操作的指南。
是否存在集成此polyfill的“标准”方法,以及如何在TypeScript中使用它?
答案 0 :(得分:2)
Aurelia附带的现有Reflect polyfill是不够的? https://github.com/aurelia/polyfills/blob/master/src/reflect.js
如果没有,将reflect-metadata
添加到Aurelia CLI项目中相当简单。
npm install --save reflect-metadata
"reflect-metadata"
添加到dependencies
vendor-bundle
配置的aurelia.json
部分
import "reflect-metadata";
添加到需要使用API的任何TypeScript文件中。至于在TypeScript中使用它,我请查看此页面:https://www.typescriptlang.org/docs/handbook/decorators.html
我将该页面中的一个示例复制到Aurelia应用程序中,一切看起来都很好:
import "reflect-metadata";
export class App {
message : string;
constructor() {
let greeter = new Greeter("Ashley");
this.message = greeter.greet();
}
}
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);
}
class Greeter {
@format("Hello, %s")
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
let formatString = getFormat(this, "greeting");
return formatString.replace("%s", this.greeting);
}
}
我跑步时的样子: