2017-07-17 24 views

回答

2

Aurelia附带的现有Reflect填充材料不够吗? https://github.com/aurelia/polyfills/blob/master/src/reflect.js

如果不是,则将reflect-metadata添加到Aurelia CLI项目相当简单。

  1. npm install --save reflect-metadata
  2. 添加"reflect-metadata"vendor-bundle配置的dependenciesaurelia.json
  3. 添加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); 
    } 
} 

它看上去像什么,当我跑它:

enter image description here

+0

Aurelia酒店polyfi我似乎没有提供defineMetadata或getMetadata的类型,我尝试'导入“aurelia-polyfills”;但它不起作用,方法没有定义。但是,我遵循了你的指南,它似乎完美地工作 - 我得到整个Reflect API的类型,并且它在运行时按预期工作,所以非常感谢。 – Sam

+0

您可能想要在polyfills回购中提出问题,要求我们为polyfills创建类型。 –

相关问题