当前位置:  开发笔记 > 编程语言 > 正文

Ts错误:声明类型既不是'void'也不是'any'的函数必须返回一个值.当return语句在subscribe方法中时

如何解决《Ts错误:声明类型既不是'void'也不是'any'的函数必须返回一个值.当return语句在subscribe方法中时》经验,为你挑选了1个好方法。

我在Angular 2项目中提供了一个简单的服务,用于检查用户是否已登录.它检查FirebaseAuth对象中是否存在用户对象.但是当函数声明实际上我的返回语句在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生命周期钩子中调用我的函数并将其分配给变量

this.loggedIn = this.CheckLogged.check();

Günter Zöchb.. 7

  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{ // <<<== no boolean is returned from this function
    return this.auth.map((user: FirebaseAuthState) => {
        if (user) {
            return true;  
        }
        return false;
    })
  }

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



1> Günter Zöchb..:
  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{ // <<<== no boolean is returned from this function
    return this.auth.map((user: FirebaseAuthState) => {
        if (user) {
            return true;  
        }
        return false;
    })
  }

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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有