TypeScript 比命名空间更好的封装类型定义的方法?

问题描述 投票:0回答:1

到目前为止,对于这个项目,我一直在使用命名空间来组织我的类型。因此,例如,我会做这样的事情:

namespace FooBar {
   export interface Foo {
       Biz: HelperType
   }
   export interface Bar {
      // blah
   }

   type HelperType = 'uWu'
}

这样我不想在其他地方访问的类型是私有的,我可以将相关类型组织在一起。使用命名空间是解决此类问题的最佳方法吗?或者还有什么我应该研究的吗?

typescript types namespaces typescript-typings
1个回答
0
投票

命名空间在早期版本的 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 项目时推荐的方法。

© www.soinside.com 2019 - 2024. All rights reserved.