如何通过Typescript中的“this”关键字包含类定义?

时间:2017-05-09 09:51:59

标签: typescript aurelia aurelia-event-aggregator aurelia-http-client

我正在创建一个扩展this然后通过includeEventsIn函数扩展includeEventsIn关键字的类,EventAggregator将使用EventAggregator类型扩展BaseService,请参阅代码{{3} }。

问题

  • 如何在BaseService类中包含@transient() export class BaseService extends HttpClient { constructor() { super(); includeEventsIn(this); } } 方法和道具以及HttpClient?
  • 使用两个类扩展类(BaseService)的另一种方法是什么?

这是代码。

{{1}}

1 个答案:

答案 0 :(得分:2)

除非绝对必要,否则在构建Aurelia应用程序时不应该使用继承(我认为它永远不必要)。赞成合成而不是继承。

例如,在您的情况下,我会Service(不是BaseService,因为您将不再使用继承)依赖于HttpClientEventAggregator 。我怀疑你真的需要通过调用includeEventsIn添加的所有功能。话虽如此,如果你确实需要它,那么你可以简单地将这三个函数添加到Service

import {inject, EventAggregator} from 'aurelia-framework';
import {HttpClient} from 'aurelia-fetch-client';

@inject(HttpClient, EventAggregator)
export class Service {
  constructor( http, ea ) {
    this.http = http;
    this.ea = ea;
  }
}

然后,您可以在实现所需的任何功能后,根据需要将此类注入另一个类。