首页 > 解决方案 > 打字稿:使用“.d.ts”文件将功能添加到“窗口”

问题描述

我有一个遗留的 *.js 应用程序,并希望将它的一部分移植到 typescript。

到目前为止,我为大多数使用的包找到了@types 定义,但是窗口对象中添加了一个全局函数。

我可以通过在 *.ts 文件的开头添加这个来修复编译错误:

declare global {
    interface Window {
        openConformationModal?: any;
    }
}

现在 obv 我不想将它包含在我的所有 *.ts 中,所以我想将它添加到 *.d.ts 文件中,以便在所有包中都可以识别它。

问题是,如果我将相同的文件添加到例如 window.d.ts 文件中,它不会被识别。我知道找到了文件夹中的类型,因为我添加了它

 {
  ...,
  "compilerOptions": {
    ....
    "typeRoots": [
      "FFOLDERPATH_TO_D_TS_FILE"
    ]
  }
}

并且发现了另一个 *.d.ts 。

PS:解决方案基于您如何在 TypeScript 中的“window”上显式设置新属性?

标签: typescript

解决方案


我在这个问题的后面找到了它:https ://stackoverflow.com/a/40698148

interface Window {
  MyNamespace: any;
}

完整答案:

如果您使用的是TypeScript 定义管理器,请按照以下步骤操作

npm install typings --global

创建typings/custom/window.d.ts

interface Window {
  MyNamespace: any;
}

declare var window: Window;

安装您的自定义类型:

typings install file:typings/custom/window.d.ts --save --global

完成,使用它打字稿不会再抱怨了:

window.MyNamespace = window.MyNamespace || {};

推荐阅读