如何在Typescript中声明global,globalThis?

时间:2020-04-02 19:08:30

标签: typescript webpack

我一直在寻找有关如何在Typescript中声明全局变量的最新答案。但是我不确定哪个教程/指南具有最新的解决方案。

无论如何,我试图使自定义全局声明d.ts正常工作。 现在,我已经设置好了,以便使用webpack / ts-loader构建并捆绑我的Typescript项目。

我的tsconfig.json文件如下所示。我读过的指南说过我不需要真正设置typeRoots的事情,因为Typescript可以自行找到类型。我尝试了不管有没有,都导致了相同的结果。

{
    "files": [
        "app.ts",
    ],
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "commonjs",
        "moduleResolution": "node",
        "noImplicitAny": false,
        "target": "es5",
        "declaration": false,
        "sourceMap": true,
        "skipLibCheck": true,
        "lib": ["es6", "dom"],
        "esModuleInterop": true,
        "typeRoots": [
            "./typings/",
            "../../../../../node_modules/@types/"
        ]
    }
}

我命名为d.ts的{​​{1}}文件包含以下内容

soho.d.ts

虽然在webpack中我遇到以下错误

declare global {
    namespace Soho {

    }
    interface Window {
        Soho: Soho;
    }

    interface Soho {
        Locale: any;
    }
}

在代码中,我尝试按以下方式使用我的全局变量

TS2304: Cannot find name 'Soho'

我的Soho.Locale 文件设置是否正确,还是我的tsconfig.json文件有问题?

1 个答案:

答案 0 :(得分:0)

我的./sireg-linux exec --loader-sitemap-sitemap "$line"文件中有错误。并且错误出现在指定的tsconfig.json属性中,该属性告诉Typescript仅在编译期间使用该文件。

因此,我的自定义files文件在这里省略了,因此出现了错误。

至于解决方案。要么删除d.ts属性,要么使用files属性将文件夹包含自定义d.ts