gpt4 book ai didi

将声明设置为 TRUE 时出现 typescript 错误

转载 作者:太空狗 更新时间:2023-10-29 17:35:06 25 4
gpt4 key购买 nike

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

我有几个服务设置,它们将 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 文件中将 'declaration' 设置为 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,
JSON.stringify(user), {
headers: this.apiConfig.getApiHeaders()
});
}

关于将声明设置为 TRUE 时出现 typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com