Typescript - проверить, определена ли объявленная переменная или нет - PullRequest
0 голосов
/ 16 февраля 2019

Я использую угловой 7.0.4 для проекта.В моем компоненте я объявил переменную, подобную этой declare var FB: any; до @Component({...}).

declare var FB: any;
  @Component({
    selector: 'app-login-modal',
    templateUrl: './login-modal.component.html',
    styleUrls: ['./login-modal.component.css']
  })
  export class LoginModalComponent implements OnInit {

    private fbAuth;
    constructor() { }

    ngOnInit(): void {
        if (FB) {
           FB.getLoginStatus((r) => {
               if (r.authResponse) {
                    this.fbAuth = r.authResponse;
                    console.log('Loggedin with facebook');
                }
            });
        }
    }

Проблема: иногда это работает, но иногда выдает ошибку ERROR ReferenceError: FB is not defined.Я думаю, это потому, что fb-sdk не загружается или загружается, но через некоторое время.

Мой вопрос: есть ли способ проверить в машинописи, определена ли переменная или нет?

Спасибо взаранее

1 Ответ

0 голосов
/ 16 февраля 2019

Прежде всего, вы, вероятно, должны выяснить, почему FB не определено.;)

Способ, которым вы объявили, предполагает, что он объявлен в глобальной области видимости, но если это не так, JS выдаст ошибку в строгом режиме .Вместо этого вы можете объявить его как член объекта Window, что позволит вам проверить, определен ли он без JS, вызывающего ошибку:

// in a `global.d.ts` file:
interface Window {
  FB?: any;
}
ngOnInit() {
  if (window.FB) {
    // ...
  }
}
...