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

时间:2018-03-28 14:06:23

标签: javascript angular typescript

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

declare var chrome: any;

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

   ngAfterViewInit(): void {

      if(chrome) 
          //some code
   }

}

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

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

  

ReferenceError:未定义chrome

似乎打字稿没有"声明"如果对象不存在,则为变量chrome。所以我想知道如何处理这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的声明没问题。

问题在于,当运行时不存在chrome时,会出现异常,因为JavaScript中的变量不存在。这样做:

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

而不是

if (chrome) {
    (...)
}

然后你可以使用chrome全局属性,当它不存在时没有运行时错误