繁体   English   中英

Function 缺少结束返回语句且返回类型不包括“未定义”?

[英]Function lacks ending return statement and return type does not include 'undefined'?

我收到一个错误:Function 缺少结束返回语句并且返回类型不包括“未定义”。

import { HttpInterceptor, HttpRequest, HttpHandler, HttpUserEvent, HttpEvent } from "@angular/common/http";
import { Observable } from "rxjs";
import { LoginService } from "../services/login.service";
import 'rxjs/add/operator/do';
import { Injectable } from "@angular/core";
import { Router } from "@angular/router";

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

    constructor(private router: Router) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { // here error

        if (req.headers.get('No-Auth') == "True")
            return next.handle(req.clone());

        if (localStorage.getItem('userToken') != null) {
            const clonedreq = req.clone({
                headers: req.headers.set("Authorization", "Bearer " + localStorage.getItem('userToken'))
            });
            return next.handle(clonedreq)
                .do(
                succ => { },
                err => {
                    if (err.status === 401)
                        this.router.navigateByUrl('/signin');
                }
                );
        }
        else {
            this.router.navigateByUrl('/sigin');
        }
    }
}

我试过用try来做,但我仍然遇到同样的错误。

有谁知道如何使它工作?

在您的方法中,您提供了Observable<HttpEvent<any>>作为返回类型。 因此,您需要从此方法返回此类型 object。

根据您的方法,您仅在 if 条件下返回 object 。 您只想返回这种 object 以及其他部分。

   else {
            return next.handle(req.clone())
            .do(
            succ => { this.router.navigateByUrl('/sigin') },
            );
        }

以下是您可以对此类错误执行的一般操作。 但是你不能在这里使用下面的机制 因为您在这里实现 HttpInterceptor ..

这是一种选择。 如果你真的不想在其他部分返回任何东西,你只需要改变你的方法签名如下

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> | undefined

或者你可以从签名中删除返回部分

intercept(req: HttpRequest<any>, next: HttpHandler)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM