【发布时间】:2019-02-11 05:52:44
【问题描述】:
我不明白为什么它说我不能将承诺的返回分配给布尔类型。我尝试过的任何其他方式都告诉我,我不能分配一个 void 来键入布尔值。不知道从这里做什么
我正在尝试将 checkJWT 的输出分配给承诺的解决方案。我可以这样做从逻辑上讲是有道理的,但 typescript 不喜欢它。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { NotificationService } from '../index';
import { UserInterface } from '../../../models/index';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor(
private notificationService: NotificationService,
private httpClient: HttpClient
) { }
checkJWT(role):boolean {
let canVisit: boolean = this.httpClient.get(window.location.protocol + '//' + window.location.hostname + ':3000/authenticate')
.toPromise()
.then(
(user: UserInterface) => {
return role === user.role;
}
) .catch((err) => { this.notificationService })
return canVisit;
}
【问题讨论】:
-
因为这个
checkJWT(role):boolean应该是checkJWT(role):Promise<boolean>,如果你想直接返回数据,使用async await -
在这里您将 caVisit 声明为布尔变量,但 get 方法返回 Promise
这就是您收到错误的原因
标签: angular typescript