gpt4 book ai didi

angular - 当返回语句在订阅方法中时出现 Ts 错误 : A function whose declared type is neither 'void' nor 'any' must return a value.

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:25 25 4
gpt4 key购买 nike

我在我的 Angular 2 项目中做了一个简单的服务来检查用户是否登录。它检查用户对象是否存在于 FirebaseAuth 对象中。但是当我的 return 语句实际上在 auth 变量的 subscribe 方法中时,函数声明会抛出“缺少 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 生命周期 Hook 中调用我的函数并将其分配给一个变量

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;
})
}

然后调用者需要订阅返回值。

关于angular - 当返回语句在订阅方法中时出现 Ts 错误 : A function whose declared type is neither 'void' nor 'any' must return a value.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878372/

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