类型 'Observable<boolean>' 不可分配给类型 'Observable<UserRegistration>'
Type 'Observable<boolean>' is not assignable to type 'Observable<UserRegistration>'
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
}
我在网上找到了这段代码,我正试图在我自己的项目中实现它,但我不断收到以下错误:
Type 'Observable<boolean>' is not assignable to type 'Observable<UserRegistration>'.
Type 'boolean' is not assignable to type 'UserRegistration'.
它也使用这个 class:
export interface UserRegistration {
email: string;
password: string;
firstName: string;
lastName: string;
location: string;
}
如您的方法所示,您 return 为布尔值 true,而您的定义表明它应该 return Observable<UserRegistration>
。将您的方法 return 类型更改为
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<boolean>
但是您的逻辑似乎并不正确,因为它总是 return 正确。
欢迎使用 Whosebug!
您的 map 语句返回 true:
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
我假设您真的想要返回可观察对象。如果是这样,你不需要映射它。
您使用的 Angular 和 RxJS 是什么版本?
如果您使用的是 Angular (v7) 的当前版本,那么它应该如下所示:
return this.http.post(this.baseUrl + "/accounts", body, options).pipe(
catchError(this.handleError)
);
如果您要返回 UserRegistration 对象,请使用以下代码。
我改动很小
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.catch(this.handleError);
}
错误很明显。你告诉打字稿你期望从方法 return 观察 UserRegistration
当你在这行代码映射和 returned 你的结果到 Boolean
时:
.map(res => true)
根据您的代码 - 如果 http 请求不会抛出错误,则将结果映射到 "true" 和 return。
只需将第一行的值从 Observable<UserRegistration>
更改为 Observable<boolean>
您的 return 类型是 Observable<UserRegistration>
但您正在 returning boolean
您应该将 return 类型更改为 Observable<boolean>
或 return 类型为 Observable<UserRegisteration>
的对象
欢迎使用 Whosebug:)
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
}
我在网上找到了这段代码,我正试图在我自己的项目中实现它,但我不断收到以下错误:
Type 'Observable<boolean>' is not assignable to type 'Observable<UserRegistration>'.
Type 'boolean' is not assignable to type 'UserRegistration'.
它也使用这个 class:
export interface UserRegistration {
email: string;
password: string;
firstName: string;
lastName: string;
location: string;
}
如您的方法所示,您 return 为布尔值 true,而您的定义表明它应该 return Observable<UserRegistration>
。将您的方法 return 类型更改为
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<boolean>
但是您的逻辑似乎并不正确,因为它总是 return 正确。
欢迎使用 Whosebug!
您的 map 语句返回 true:
return this.http.post(this.baseUrl + "/accounts", body, options)
.map(res => true)
.catch(this.handleError);
我假设您真的想要返回可观察对象。如果是这样,你不需要映射它。
您使用的 Angular 和 RxJS 是什么版本?
如果您使用的是 Angular (v7) 的当前版本,那么它应该如下所示:
return this.http.post(this.baseUrl + "/accounts", body, options).pipe(
catchError(this.handleError)
);
如果您要返回 UserRegistration 对象,请使用以下代码。 我改动很小
register(email: string, password: string, firstName: string, lastName: string,location: string): Observable<UserRegistration> {
let body = JSON.stringify({ email, password, firstName, lastName,location });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.baseUrl + "/accounts", body, options)
.catch(this.handleError);
}
错误很明显。你告诉打字稿你期望从方法 return 观察 UserRegistration
当你在这行代码映射和 returned 你的结果到 Boolean
时:
.map(res => true)
根据您的代码 - 如果 http 请求不会抛出错误,则将结果映射到 "true" 和 return。
只需将第一行的值从 Observable<UserRegistration>
更改为 Observable<boolean>
您的 return 类型是 Observable<UserRegistration>
但您正在 returning boolean
您应该将 return 类型更改为 Observable<boolean>
或 return 类型为 Observable<UserRegisteration>
欢迎使用 Whosebug:)