Typescript - 声明可选的全局变量

CRC*_*ron 5 typescript angular2-services angular

我正在创建一个服务来检查用户是否登录。这只是一个从后端传递的全局变量“userIsLoggedIn”。该服务将在多个应用程序中使用,有时 userIsLoggedIn 全局变量将不存在。

我所拥有的是...

import { Injectable } from '@angular/core';

declare const userIsLoggedIn: boolean;

@Injectable()
export class UserLoggedInService{
    isUserLoggedIn(): boolean {
        return userIsLoggedIn || false;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果 userIsLoggedIn 全局变量不存在,则会收到错误,如果省略声明行,则会收到错误。

我曾希望能够做类似的事情

declare const userIsLoggedIn?: boolean;
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。有人可以帮我吗?

小智 1

对我来说,如果我做了检查,它就起作用了 (typeof userIsLoggedIn !== 'undefined')。我尝试过的任何其他方法都不起作用。您的代码现在应如下所示:

import { Injectable } from '@angular/core';

declare let userIsLoggedIn: boolean;

@Injectable()
export class UserLoggedInService{
    isUserLoggedIn(): boolean {
        if(typeof userIsLoggedIn !== 'undefined'){
            return userIsLoggedIn;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)