我有一个问题希望你能帮助我。谢谢
升级到 Typescript 2.9.1 后,编译器提示没有返回方法应该返回的类型。
当前代码:
public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {
const subject = new Subject();
this.apiService
.get(this.buildApiPath('card-session/' + sessionId))
.subscribe(
(response) => {
subject.next(response.result);
},
(error) => {
subject.error(error);
}
);
/* <-- ERROR: Type 'Observable<{}>' is not assignable to type 'Observable<FundSourceCardSessionInterface>' */
return subject.asObservable();
}
我的解决方案:
到目前为止,我正在通过做我的返回,虽然我不知道它是否正确,对我来说看起来很奇怪。
return <Observable<FundSourceCardSessionInterface>> subject.asObservable();
问题:
如果之前使用 Typescript 2.3.4 工作正常,现在我不明白为什么它不能?,如果我已经在方法的开头指定了期望哪个返回,为什么我必须强制返回?基本上是重复代码:
public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {
最佳答案
错误很明显:您将函数声明为返回 Observable<FundSourceCardSessionInterface>
而你正在返回 Observable<{}>
.我认为(不完全确定)之前,TypeScript 理解您正在返回 Observable<any>
, 和 Observable<any>
可分配给 Observable<FundSourceCardSessionInterface>
.但是,{}
不能分配给 FundSourceCArdSessionInterface
.
更改您声明 Subject
的方式:
const subject = new Subject<FundSourceCardSessionInterface>();`
关于返回 subject.asObservable() 时的 typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022972/