首页 > 解决方案 > 如何在 Typescript 中声明一个全局的 globalThis?

问题描述

我一直在谷歌上搜索有关如何在 Typescript 中声明全局变量的更新答案。但我不确定哪个教程/指南有最新的解决方案。

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

我的 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命名的文件soho.d.ts包含以下内容

declare global {
    namespace Soho {

    }
    interface Window {
        Soho: Soho;
    }

    interface Soho {
        Locale: any;
    }
}

我在 webpack 中收到以下错误

TS2304: Cannot find name 'Soho'

在代码中我试图使用我的全局如下

Soho.Locale

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

标签: typescriptwebpack

解决方案


tsconfig.json我的文件中有错误。错误出在指定的files属性中,它告诉 Typescript 在编译期间仅使用该文件。

因此,我的自定义d.ts文件省略了错误。

至于解决方案。删除属性或使用该属性files将文件夹包含在自定义中。d.tsinclude


推荐阅读