扩展基类vs在Typescript中注入它

时间:2017-12-21 00:14:35

标签: angular typescript

我正在开发一个角度4应用程序,我遇到了一个情况,我有一个 htpInterceptor 基本服务类,它具有Typescript通用的GET,POST和DELETE函数。我希望我的所有角度服务都使用此基类。现在我不确定是否应该将此基本服务注入我的所有服务中,或者我应该使用此基本服务类扩展所有服务类。

我应该用, <table>             要么 export class AuthService extends HttpInterceptorService

这两种方法之间有什么区别(利弊)。

以下是我的基本服务类

constructor(private _interceptor:HttpInterceptorService) { }

2 个答案:

答案 0 :(得分:1)

使用导入的服务,您依赖Angular的DI,您可以决定将其包含在哪个级别。

使用extends依赖于本机ES6语法,因此它可能更具可移植性。

所以我想这主要是一个偏好问题,你是否认为你可以在Angular之外使用你的代码。

同样使用扩展,您必须在调用父类的每个构造函数中调用super()。如果你关心这一点,这并不像Angular那样...

答案 1 :(得分:1)

利弊取决于案件。但上面的代码是经典的构成与继承的困境。建议的方法通常为composition over inheritance

在这种情况下,HttpInterceptorService应该作为Http的扩展替代品。所以应该注入而不是Http

如果AuthService应该实现HttpInterceptorService并扩展其功能(例如,包装现有方法并添加身份验证标头),那么它应该从HttpInterceptorService 继承