我有一个遗留* .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?
答案 0 :(得分:3)
我在这个问题上发现了这个问题:https://stackoverflow.com/a/40698148
interface Window {
MyNamespace: any;
}
完整答案:
如果您使用的是TypeScript Definition Manager , 创建 安装自定义输入: 完成,使用它! 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 || {};