[英]Error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value
[英]Ts Error : A function whose declared type is neither 'void' nor 'any' must return a value. when return statements are inside a subscribe method
我在Angular 2项目中做了一个简单的服务,用于检查用户是否登录。 它检查FirebaseAuth对象中是否存在用户对象。 但是,当我的return语句实际上位于auth变量的subscription方法内时,函数声明会为“缺少return语句”引发错误。 代码看起来像这样:
import { Component, OnInit , Injectable} from '@angular/core';
import { FirebaseAuthState, FirebaseAuth} from "angularfire2";
@Injectable()
export class CheckLogged {
constructor(private auth:FirebaseAuth ){}
check(): boolean{
this.auth.subscribe((user: FirebaseAuthState) => {
if (user) {
return true;
}
return false;
})
}
}
“ check():boolean”语句引发此错误
我在组件的OnInit生命周期挂钩中调用我的函数并将其分配给变量
this.loggedIn = this.CheckLogged.check();
check(): boolean{ // <<<== no boolean is returned from this function
this.auth.subscribe((user: FirebaseAuthState) => {
if (user) {
return true;
}
return false;
})
}
在上面的代码中, return xxx
仅从传递给subscribe(...)
的回调中返回,而不是从check
返回。
您无法从异步切换回同步。 该方法应该看起来像
check(): Observable<boolean>{ // <<<== no boolean is returned from this function
return this.auth.map((user: FirebaseAuthState) => {
if (user) {
return true;
}
return false;
})
}
然后调用者需要订阅返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.