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)
