gpt4 book ai didi

typescript - 如何获得没有具体类的深度嵌套命名空间的别名?

转载 作者:行者123 更新时间:2023-12-04 02:58:45 24 4
gpt4 key购买 nike

我有一个类型文件,里面塞满了深度嵌套的命名空间,由一堆 C# 类生成。 (这个类型文件已经被围绕 internal modules 构建的其他代码使用。我正在删除其他代码,但这需要一段时间,我有一些代码需要立即运行。)

打字文件如下所示:

declare namespace Thing.Stuff.WhosOnFirst.WhatsOnSecond {
export interface IDontKnowsOnThird {
... lots of interfaces, no classes. In short, *nothing* that turns into JavaScript.
}
}

当然,这使用起来非常尴尬:
public findShortStop(
thirdBase: Thing.Stuff.WhosOnFirst.WhatsOnSecond.IDontKnowsOnThird,
pitcher: Thing.Stuff.WhosOnFirst.WhatsOnSecond.Tomorrow
) {
...
}

所以我想使用 import 语句作为别名。巧合的是,我总是能够摆脱这样的陈述,因为“事物”实际上存在于我的作品中:
import Stuff = Thing.Stuff;

但事实证明,我不能用我的深层嵌套类做到这一点:
import WhatsOnSecond = Thing.Stuff.WhosOnFirst.WhatsOnSecond;
let baseman: WhatsOnSecond.IDontKnowsOnThird = {};

上面的代码生成的 JavaScript 如下所示:
WhatsOnSecond = Thing.Stuff.WhosOnFirst.WhatsOnSecond;
var baseman = {};

这是一个大问题:这是控制台中显示的错误。
Uncaught (in promise) Error: (SystemJS) TypeError: Cannot read property 'WhosOnFirst' of undefined
at execute (http://localhost/Scripts/Shared/utils.js?v=180907165808:10:59)

碰巧,“事物”存在。但“东西”没有。因此,当我为 Stuff 创建别名时,您将获得有效(如果无意义)代码,并且允许我通过该别名使用 Thing.Stuff 命名空间中的所有类型,因此 Stuff.WhosOnFirst 很好:
Stuff = Thing.Stuff; // evaluates to undefined. Compiler likes me, runtime likes me, no errors.

但是用进一步嵌套的属性这样做是完全失败的,因为试图访问“未定义”的属性是一个 JavaScript 错误,会停止脚本的执行。

所以: 如何创建这些导入别名来让我引用深度嵌套的命名空间,这样我就不必在每次引用接口(interface)时都输入整个命名空间?

每次我使用界面时,输入带有六个单词的命名空间会很快变老。

最佳答案

您可以使用:

type Stuff = Thing.Stuff;

关于typescript - 如何获得没有具体类的深度嵌套命名空间的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276347/

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