javascript - 如何声明 typescript 中可能不存在的变量?

标签 javascript angular typescript

我有一个 Angular 应用程序,我需要在我的应用程序中使用 chrome 扩展对象。 所以我在我的组件中做了:

declare var chrome: any;

@Component({
templateUrl: './myComponent.component.html'
})
export class MyComponent implements AfterViewInit {

   ngAfterViewInit(): void {

      if(chrome) 
          //some code
   }

}

如果我在 Google Chrome 浏览器 上使用此代码,它工作正常,我确实可以访问 chrome 对象。

问题是当我使用其他浏览器如 Firefox 时,控制台会抛出一个错误:

ReferenceError: chrome is not defined

如果对象不存在, typescript 似乎不会“声明”变量 chrome。所以我想知道如何处理这个?

谢谢!

最佳答案

你的声明没问题。

问题是,当 chrome 在运行时不存在时,您会得到一个异常,因为 JavaScript 中的变量不存在。这样做:

if ('chrome' in window) {
    (...)
}

代替

if (chrome) {
    (...)
}

然后就可以使用chrome全局属性了,不存在时不会出现运行时错误

关于javascript - 如何声明 typescript 中可能不存在的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536724/

相关文章:

javascript - Angular 2 : Directives: capturing click event on children

angular - 如何让守卫订阅 Angular 2 中服务的长轮询请求

generics - TypeScript 中静态方法的抽象方法版本

javascript - Javascript 可以写在 .edge 文件中吗?

javascript - 使用 PHP 在数据库中存储动态创建元素的 HTML

javascript - 枚举联合与枚举不同?

jQuery 插件不适用于 Angular 5(插件不是函数)

javascript - $http.GET 中的 JSON 数组返回未定义,即使它不应该返回

angular - 如何在静态函数中调整大小/更改时将 gridster-item 保存在数据库中?

javascript - 如何使用 Google Maps DirectionsService.route() 函数中的 Angular 双向绑定(bind)?