如何通过Typescript中的“this”关键字包含类定义?
我正在创建一个扩展类HttpClient
,然后将this
关键字扩展为includeEventsIn
函数,includeEventsIn
将扩展BaseService和EventAggregator类型,请参阅代码here。如何通过Typescript中的“this”关键字包含类定义?
问题
- 我怎么能包括
BaseService
类EventAggregator
方法和道具与HttpClient的相处? - 什么是另一种扩展类(BaseService)与两个类的方法?
这是代码。
@transient()
export class BaseService extends HttpClient {
constructor() {
super();
includeEventsIn(this);
}
}
时建立应用程式奥里利亚除非绝对必要,你不应该使用继承(我会认为这是从来没有必要)。青睐继承。
例如,在你的情况,我会Service
(不BaseService
,因为你将不再使用继承)承担HttpClient
和EventAggregator
的依赖。我怀疑你真的需要通过致电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;
}
}
然后,您可以在实现所需的任何功能后,根据需要将此类注入到另一个类中。
它是有道理的。但是为了这个问题,在使用includeEventsIn时,typecript是否可以通过这个关键字来扩展类定义(道具和方法)? – janmvtrinidad
我会看看创建一个装饰器来做到这一点。 'includeEventsIn'是一种混合类型的东西。 –
我同意你Ashley Saiyaman! –
你必须在'BaseClass'中注入'EventAggreator'。然而,我认为如果你在'BaseClass'中注入'HttpClient'和'EventAggregator',而不使用继承,那么它会更有意义。 –
EventAggregator和HttpClient的方法和属性不能用于基类。我不想注入它,因为它需要手动实现它的所有属性和方法 – janmvtrinidad