Javascript 使用祖先模块中的变量,当它';他在别处宣布

Javascript 使用祖先模块中的变量,当它';他在别处宣布,javascript,typescript,Javascript,Typescript,这是我的情况。我加载了一些传统的vanilla JavaScript,其中包含以下代码: window.A={x:{/*这里住着几样东西*/}; 这是重新处理我的问题的最小代码。实际上,A是我们的全局“名称空间”对象,x是一个具有我想在较新的Typescript类中访问的一些遗留函数的对象 因此,在运行上述命令之后,我将尝试访问嵌套Typescript模块中类内的x,如下所示: 模块A{ 模块B{ 导出类项目{ 构造函数(){ 警报(A.x); } } } } Web Essentials以

这是我的情况。我加载了一些传统的vanilla JavaScript,其中包含以下代码:

window.A={x:{/*这里住着几样东西*/};
这是重新处理我的问题的最小代码。实际上,
A
是我们的全局“名称空间”对象,
x
是一个具有我想在较新的Typescript类中访问的一些遗留函数的对象

因此,在运行上述命令之后,我将尝试访问嵌套Typescript模块中类内的
x
,如下所示:

模块A{
模块B{
导出类项目{
构造函数(){
警报(A.x);
}
}
}
}
Web Essentials以及typescriptlang.org网站可以生成JavaScript,而JavaScript实际上可以根据需要工作,但VS2012的typescriptlang.org的语法强调都抱怨:

类型“typeof A”上不存在属性“x”

这是有道理的。在中,它显示了您需要如何通知编译器全局变量,因此我尝试添加

声明变量x:any;
…到
模块A
,但这没有帮助。我也试过

声明var A.x:any;
…模块A的内部和外部都有
模块,但这也无济于事


那么,我如何通知Typescript编译器
A.x
,以便我可以在
项中安全地访问它?

如果您将它添加到您的Typescript文件中,它知道x确实存在,您也可以将typeinfo添加到此文件中。 由于
declare
不会生成任何代码,它只是TypeScript编译器的一些信息

declare module A {
    var x;
}

你可以在这里找到更多信息:

PS。我非常愿意编辑我的问题标题,“当它在别处声明时”的信息量不大,但我很难想出更好的措辞。