gpt4 book ai didi

javascript - 在别处声明时使用来自祖先模块的变量

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:30 25 4
gpt4 key购买 nike

这是我的情况。我加载了一些包含此代码的遗留 vanilla JavaScript:

window.A = { x: { /* several things live here */ } };

这是重现我的问题的最少代码。实际上,A 是我们的全局“命名空间”对象,而 x 是一个具有我想在较新的 Typescript 类中访问的一些遗留功能的对象。

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

module A {       
module B {
export class Item {
constructor(){
alert(A.x);
}
}
}
}

Web Essesntials 以及 typescriptlang.org 站点可以生成 JavaScript,实际上可以按要求运行,但是 VS2012 和 typescriptlang.org 的语法高亮显示都提示:

Property 'x' does not exist on type 'typeof A'.

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

declare var x: any;

...到 module A,但这没有帮助。我也试过...

declare var A.x: any;

...在模块 A 内部和外部,但这也无济于事。

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

最佳答案

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

declare module A {
var x;
}

您可以在此处找到更多信息:Writing Definition Files

关于javascript - 在别处声明时使用来自祖先模块的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com