将声明设置为TRUE时的Typescript错误

时间:2016-02-04 05:20:36

标签: typescript angular angular2-services

我正在尝试为我正在处理的Angular 2项目创建打字稿定义,以便它可以成为可导出的库。

我有几个服务设置,它们将http请求返回到与以下内容完全相似的组件:

controll bar

然后我从一个组件中调用这样的东西:

public create(user:User) {
  return this.http.post(this._apiUrls.create,
    JSON.stringify(user), {
      headers: this.apiConfig.getApiHeaders()
    });
}

这一切都正常,直到我转过来声明&#​​39;在tsconfig文件中为true,以便我可以创建typescript定义文件。我的几个服务开始出现以下错误:

Session.create(user).subscribe((res:Response) => {
  this.user = res.json().user
}); 

我主要理解这个问题,但我不知道解决方案。如果我将Observable导入服务,那么typescript linter将抛出错误,因为从技术上讲它没有在该文件中使用。

来自Angular 1这是我们在所有应用程序中采用的类似范例,以打破我们的代码,但也许我需要改变Angular 2中的方法?我已经看了很多其他的Angular 2示例,他们也以类似的方式完成了它。

1 个答案:

答案 0 :(得分:5)

截至今天,编译器不会在声明文件中自动为您导入类型。

现在最好的解决方法是手动禁用导入的lint规则,或者导入类型并使用显式类型注释,以便linter将其标记为用法。

换句话说

// Explicit import of 'Observable' so that '.d.ts' files
// can be generated correctly.
import { Observable } from "node_modules/rxjs/Observable";

// Explicit use of 'Observable' to satisfy your linter.
public create(user: User): Observable {
  return this.http.post(this._apiUrls.create,
     JSON.stringify(user), {
       headers: this.apiConfig.getApiHeaders()
    });
}