如何在HTML中使用全局变量并在打字稿中使用它?

时间:2018-01-03 23:48:54

标签: html angular typescript

我需要在index.html文件中定义一个变量,并在我的angular4 / typescript代码中使用它,我得到一个编译错误。

我的编译错误是:

Error:(109, 27) TS2339: Property 'standalone' does not exist on type 'Window'.

HTML中的变量定义是:              var standalone ='true';

    System.import('app').catch(function (err) {
        console.error(err);
    });
</script>

打字稿代码是:

if(window.standalone !== undefined) {
    console.log('standalone');
}

任何人都能看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

全局变量应该在TypeScript中声明为全局变量:

declare var standalone: boolean;

为了引用window属性,还应该指定全局:

declare global {
  interface Window {
    standalone: boolean;
  }
}

如果全局变量被使用了一次或多次并且无法从类型检查中受益,则可以有意地跳过类型:

if((<any>window).standalone !== undefined) ...

或者:

if(window['standalone'] !== undefined) ...