将声明设置为TRUE时的Typescript错误
发布时间:2020-12-17 17:39:19 所属栏目:安全 来源:网络整理
导读:我正在尝试为我正在处理的Angular 2项目创建打字稿定义,以便它可以成为可导出的库. 我有几个服务设置,将http请求返回到组件,所有这些都与以下内容非常类似: public create(user:User) { return this.http.post(this._apiUrls.create,JSON.stringify(user),{
我正在尝试为我正在处理的Angular 2项目创建打字稿定义,以便它可以成为可导出的库.
我有几个服务设置,将http请求返回到组件,所有这些都与以下内容非常类似: public create(user:User) { return this.http.post(this._apiUrls.create,JSON.stringify(user),{ headers: this.apiConfig.getApiHeaders() }); } 然后我从一个组件调用这样的东西: Session.create(user).subscribe((res:Response) => { this.user = res.json().user }); 这一切都正常,直到我在tsconfig文件中将’声明’变为true,以便我可以创建typescript定义文件.我的几个服务开始出现以下错误: error TS4053: Return type of public method from exported class has or is using name 'Observable' from external module "node_modules/rxjs/Observable" but cannot be named. 我大多理解这个问题,但我不知道解决方案.如果我将Observable导入服务,那么typescript linter将抛出错误,因为从技术上讲它没有在该文件中使用. 来自Angular 1这是我们在所有应用程序中采用的类似范例,以打破我们的代码,但也许我需要改变Angular 2中的方法?我已经看过很多其他的Angular 2示例,他们也以类似的方式完成了它. 解决方法
截至今天,编译器不会在声明文件中自动为您导入类型.
现在最好的解决方法是手动禁用导入的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,{ headers: this.apiConfig.getApiHeaders() }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |