gpt4 book ai didi

typescript - 在多个 TypeScript 文件中声明和使用相同的命名空间

转载 作者:行者123 更新时间:2023-12-04 16:55:44 25 4
gpt4 key购买 nike

我是 TypeScript 的新手,并且在多个文件中使用相同的命名空间时遇到了问题:

文件model.ts

export namespace MyCompany {
export class Model {
...
}
}

文件 webviewer.ts
import { Model } from './model';

export namespace MyCompany {
model : Model;
export class WebViewer {
use() : void {
this.model = new Model();
...
}
...
}
}

文件 index.ts
import { WebViewer } from './webviewer';

let webviewer = new WebViewer();
webviewer.use();

我找不到关于如何在 MyCompany.WebViewer 类中使用 MyCompany.Model 和在 index.ts 文件中使用 MyCompany.WebViewer 的任何文档。

下面的这个文档包含许多示例,但是当相同的命名空间声明和使用在同一个库的多个文件中时,它们都没有处理我的情况。

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#110-namespaces

更新

现在我问自己是否可以在每个文件中使用命名空间。可能有一种方法可以使用 .d.ts 文件,其中的类可以在命名空间内导出,因此稍后可以将库用作 Acme.WebViewer 等

最佳答案

命名空间的基本思想是避免命名冲突(如果您或团队中的其他开发人员想要另一个 Model 类,但不知道您的,该怎么办?)

随着模块的引入,命名空间变得有点过时了,因为它们以更优雅的方式解决了问题。您可以执行以下操作并完全跳过命名空间:

模型.ts

export class Model {
// ...
}

网页浏览器.ts
import { Model } from './model';

export class WebViewer {
private model: Model;
use(): void {
this.model = new Model();
}
}

索引.ts
import { WebViewer } from './webviewer';

let webviewer = new WebViewer();
webviewer.use();

关于typescript - 在多个 TypeScript 文件中声明和使用相同的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091711/

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