打字稿:将功能添加到"窗口"用" .d.ts"文件

时间:2018-05-23 12:13:09

标签: typescript

我有一个遗留* .js应用程序,并希望将其中的部分内容移植到打字稿。

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

我能够在* .ts文件的开头通过addind修复编译错误:

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

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

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

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

并且找到了另一个* .d.ts。

PS:解决方案基于How do you explicitly set a new property on `window` in TypeScript?

1 个答案:

答案 0 :(得分:3)

我在这个问题上发现了这个问题:https://stackoverflow.com/a/40698148

interface Window {
  MyNamespace: any;
}
  

完整答案:

如果您使用的是TypeScript Definition Manager

,请按照以下步骤进行操作
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

完成,使用它 Typescript不会再抱怨了:

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