网站搜索

javascript - 跨多个 .ts/.tsx 文件的自定义类型


我正在尝试用 Typescript(以及 React/Redux)构建我的第一个项目,并且在将自定义类型在多个文件之间传递时遇到了困难:比如让我的操作类型可用于操作创建者、Reducer 以及每个派发这些操作的组件。

那么,这里的正确做法是什么:

  • 在一个公共文件中声明所有自定义类型,并在需要的地方导入它们?
  • 在相关的文件中声明自定义类型,并构建导入/导出的网络?
  • 还有我没想到的其他选择吗?

我理解这个问题可能会因为带有个人观点而被关闭,但我在 typescriptlang.org 和其他资源(包括 Stack Overflow 话题)中都找不到答案。

答案#1

我通常根据类型是更偏向全局还是局部来进行划分。例如,如果我有一些类型只在单个模块或文件中使用,我通常会将这些类型存放在实现代码的同一位置:

/components
  /Search
    /Search.tsx
    /search.types.ts <- contains component types like props
    /SearchContainer.tsx

对于更多的全局类型,我有一个单独的 /types 文件夹,通常位于根目录下,我将其拆分为不同的命名空间。

/types
  /search
  /authentication
  /actions
  /routing

你在这个 types 目录中存储的内容将是特定于你的应用程序的,但你可以大致理解其思路。你还可以使用别名来导入类型,这样就不必处理多层级的相对导入:../../../types/something => @types/something

答案#2

将你所有的类型放入一个模块,并命名为 filename.d.ts

//filename.d.ts

  declare module "my-module"{
    
      export type int = number;
    
    
    {

如果你想使用枚举,请把它放在 .ts 文件中(而不是 d.ts)

相关文章