TypeScript,带继承的Angular 2依赖注入

时间:2016-04-28 07:38:54

标签: inheritance dependency-injection typescript angular

我正在使用带有TypeScript的Angular 2来构建前端应用程序。我有一个Generic Repository类:

export abstract class Repository<T extends IEntity>
{    
  constructor(protected _http: Http) {}

  add(entity: T) {}
  delete(entity: T) {}
  list() {}
  get(id: number) {} 
  update(entity: T) {}
}

我的服务类然后扩展我的通用存储库类:

export class Service extends Repository<Entity>
{    
  constructor(protected _http: Http) {
    super(Http);
  }
}

当我在Parent类中使用依赖注入时出现问题。然后我如何将其转换为子类?

当TypeScript编译时,我收到以下错误:

  

错误TS2345:Http&#39;类型&#39;类型的参数不能转让给   类型参数&#39; Http&#39; .Property&#39; _backend&#39;在类型中缺失   &#39;键入Http&#39;

我不确定如何纠正此错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:7)

你只需要转发你传递的实例(而不是你所做的类型):

export class Service extends Repository<Entity>
{    
  constructor(protected _http: Http) {
    super(_http);
  }
}

如果子类中没有引入其他参数,也不需要在子类构造函数中执行其他代码,则可以省略构造函数。