Ist das vorhandene Reflect-Polyfill, das mit Aurelia geliefert wird, nicht genug? https://github.com/aurelia/polyfills/blob/master/src/reflect.js
Wenn nicht, ist es einfach, reflect-metadata
zu einem Aurelia CLI-Projekt hinzuzufügen.
npm install --save reflect-metadata
- die
"reflect-metadata"
zum dependencies
Abschnitt der vendor-bundle
Konfiguration hinzufügen in aurelia.json
- hinzufügen
import "reflect-metadata";
zu was auch immer Typoskript Datei, wo Sie die API verwenden müssen.
Soweit es in Typoskript verwenden, würde ich diese Seite überprüfen: https://www.typescriptlang.org/docs/handbook/decorators.html
ich eines der Beispiele von dieser Seite in eine zu Aurelia App kopiert und alles sah aus wie es gut funktioniert:
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);
}
}
Was es aussah, als ich es lief:
Die polyfi Aurelia ll scheint keine typings für defineMetadata oder getMetadata zu liefern, ich habe versucht "aurelia-polyfills" zu importieren; aber es hat nicht funktioniert, die Methoden wurden nicht definiert. Allerdings habe ich Ihren Leitfaden verfolgt und es scheint perfekt zu funktionieren - ich bekomme Typings für die volle Reflect API und es funktioniert zur Laufzeit wie erwartet, also danke dafür. – Sam
Sie könnten ein Problem im PolyFill Repo einreichen, um anzufragen, dass wir Typings für die Polyfills erstellen. –