到目前为止,对于这个项目,我一直在使用命名空间来组织我的类型。因此,例如,我会做这样的事情:
namespace FooBar {
export interface Foo {
Biz: HelperType
}
export interface Bar {
// blah
}
type HelperType = 'uWu'
}
这样我不想在其他地方访问的类型是私有的,我可以将相关类型组织在一起。使用命名空间是解决此类问题的最佳方法吗?或者还有什么我应该研究的吗?
命名空间在早期版本的 TypeScript 中用于帮助组织和范围类型和其他声明。然而,随着 ES6 模块的引入,首选方法是使用基于模块的组织。 ES6 模块提供了一种更标准和现代的方式来组织您的代码和类型。
您可以创建单独的 TypeScript 文件并导出您想要访问的类型,同时将私有类型保留在文件本地,而不是使用命名空间。这是一个例子:
创建文件 fooBar.ts:
// Public types
export interface Foo {
Biz: HelperType;
}
export interface Bar {
// blah
}
// Private type, not exported
type HelperType = "uWu";
从另一个文件中导入 fooBar.ts 的类型:
import { Foo, Bar } from "./fooBar";
// Use Foo and Bar types
这样,您可以利用基于模块的组织并保持您的类型有条理和范围。 HelperType 将保持私有,因为它不会从 fooBar.ts 文件中导出。这是使用现代 TypeScript 项目时推荐的方法。