1
我想使用TypeScript將來自NPM的反射元數據包集成到Aurelia CLI項目中,但我找不到有關如何執行此操作的任何指南。如何在Aurelia CLI項目中引用和導入反射元數據?
是否有一種「標準」方式來整合這個polyfill,它應該如何在TypeScript中使用?
我想使用TypeScript將來自NPM的反射元數據包集成到Aurelia CLI項目中,但我找不到有關如何執行此操作的任何指南。如何在Aurelia CLI項目中引用和導入反射元數據?
是否有一種「標準」方式來整合這個polyfill,它應該如何在TypeScript中使用?
Aurelia附帶的現有Reflect填充材料不夠嗎? https://github.com/aurelia/polyfills/blob/master/src/reflect.js
如果不是,則將reflect-metadata
添加到Aurelia CLI項目相當簡單。
npm install --save reflect-metadata
"reflect-metadata"
到vendor-bundle
配置的dependencies
節aurelia.json
import "reflect-metadata";
到你需要使用API的任何打字稿文件。至於在打字稿使用它,我會檢查這個頁面:https://www.typescriptlang.org/docs/handbook/decorators.html
我在一個奧裏利亞應用程序複製的例子之一從該網頁,一切看起來像它工作得很好:
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);
}
}
它看上去像什麼,當我跑它:
Aurelia酒店polyfi我似乎沒有提供defineMetadata或getMetadata的類型,我嘗試'導入「aurelia-polyfills」;但它不起作用,方法沒有定義。但是,我遵循了你的指南,它似乎完美地工作 - 我得到整個Reflect API的類型,並且它在運行時按預期工作,所以非常感謝。 – Sam
您可能想要在polyfills回購中提出問題,要求我們爲polyfills創建類型。 –