[英]Function lacks ending return statement and return type does not include 'undefined'.ts(2366) - Angular
[英]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.