【发布时间】:2018-03-09 10:36:02
【问题描述】:
我为模型定义了以下接口:
export interface IModel {
fillFromResponse(body: any);
}
所以,在一个模型(例如,Token)中,我实现了接口:
import { IModel } from './imodel';
export class Token implements IModel {
public value: string;
public fillFromResponse(body: any) {
let token = new Token();
token.value = body.access_token;
return token;
}
}
我希望所有可观察的地图或捕获函数都有一个回调:
public handleResponse(instance: IModel, observable: Observable<Response>): Observable<IModel> {
return observable.map(
(response: Response) => {
return instance.fillFromResponse(response.json());
}
).catch((error: any) =>
Observable.throw(error.json().messages[0] || 'Unknown error')
);
}
所以,在服务中我有以下方法:
public login(credentials): Observable<Token> {
let url = this.api.getUrl('/users/tokens');
let options = this.api.getOptions();
return this.api.handleResponse(
new Token(),
this.http.post(url, credentials, options)
);
}
但我明白了:
类型 Observable
不可分配给 Observable
为什么接口不像 PHP 等其他语言那样工作?
【问题讨论】:
标签: angular typescript interface casting