2017-07-17 2 views

Antwort

2

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.

  1. npm install --save reflect-metadata
  2. die "reflect-metadata" zum dependencies Abschnitt der vendor-bundle Konfiguration hinzufügen in aurelia.json
  3. 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:

enter image description here

+0

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

+0

Sie könnten ein Problem im PolyFill Repo einreichen, um anzufragen, dass wir Typings für die Polyfills erstellen. –

Verwandte Themen