gpt4 book ai didi

angular - 无法将响应类型对象分配给响应类型变量

转载 作者:太空狗 更新时间:2023-10-29 19:28:28 24 4
gpt4 key购买 nike

我收到以下错误。

Argument of type 'Response' is not assignable to parameter of type 'Response'.
Property 'body' is missing in type 'Response'.

我正在运行的代码依赖于 observables。

public register(reporter: Reporter): Observable<Response> {

const content = JSON.stringify(reporter);
const headers = new Headers({ "Content-Type": "application/json" });
const options = new RequestOptions({ headers: headers });
const userUrl = env.Url + "user";
const passwordUrl = env.Url + "PasswordClaim/" + reporter.Id;

const observable = new Observable<Response>(_ => {
this.http
.post(userUrl, content, options)
.subscribe(result => this.http
.get(passwordUrl)
.subscribe(result => _.next(result), error => _.error(error)),
error => _.error(error));
});

return observable;
}

之前,我们使用弱类型的可观察对象,它可以工作,但不如我希望的那样合适和整洁。因此,我将鼠标悬停在 result 上,发现它是 Response 类型。然而,使用它似乎会产生这个奇怪的错误消息。

我可以想象它是不同的类,它们以相同的方式命名并放置在不同的命名空间中。但是,谷歌搜索没有给我任何确认,更不用说关于如何解决它的建议解决方案了。有suggestions一起省略打字,但这不是问题的一部分。

最佳答案

您在这里所做的是返回一个 Observable 的 Observable。你的方法应该按照

public register(reporter: Reporter): Observable<Reporter> {}

或者

public register(reporter: Reporter): Observable<any> {}

或许您可以试试看结果?

编辑 我现在对您的问题有了更好的把握。

尝试这样的事情

public register(reporter: Reporter): Observable<Response> {

const content = JSON.stringify(reporter);
const headers = new Headers({ "Content-Type": "application/json" });
const options = new RequestOptions({ headers: headers });
const userUrl = env.Url + "user";
const passwordUrl = env.Url + "PasswordClaim/" + reporter.Id;

return this.http
.post(userUrl, content, options)
.flatMap(result => this.http.get(passwordUrl));
}

基本上,HTTP 调用将返回一个响应。通过使用订阅,您实际上可以管理响应。您正在做的是处理响应,返回一个新的自定义响应。

我所做的是用 flatMap 进行两次调用,并返回最后一次调用的结果。

EDIT 2 这是完整的功能:

public register(reporter: Reporter): Observable<Response> {

let ret = {};

const content = JSON.stringify(reporter);
const headers = new Headers({ "Content-Type": "application/json" });
const options = new RequestOptions({ headers: headers });
const userUrl = env.Url + "user";
const passwordUrl = env.Url + "PasswordClaim/" + reporter.Id;

return this.http
.post(userUrl, content, options)
.flatMap(result => {
ret['result1'] = result;
return this.http.get(passwordUrl).map(r => ret['result2'] = r);
});
}

关于angular - 无法将响应类型对象分配给响应类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46001398/

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