typescript - 模块的所有接口(interface)和类型声明都应该放在一个文件中吗?

标签 typescript

目前,我在与逻辑相同的文件中声明类型和接口(interface)。但是,我发现自己需要经常重用在另一个文件中创建的一些类型和接口(interface)。我最终在每个文件中都有类型和接口(interface),但不知道在哪里导入什么。

为单个功能创建单个类型/接口(interface)文件是否更好?例如,所有登录页面类型和接口(interface)都位于 loginTypes.ts 内。这样,我总是知道在哪里导入我需要的类型。

最佳答案

通常我建议声明面向上下文的接口(interface)和类型。这样,包含所有登录逻辑的 login.ts 也会导出所有相关类型(例如 LoginApiResponse)。如果多个文件具有嵌套关注结构(例如 login.tsaccessTokenLogin.tstwoFactorAuth...),其中 login. ts 是 brodest 成员,它将所有子功能集中在一起,我建议也重新导出子模块中声明的接口(interface)中的所有内容。这样你就会:


login.ts

export interface GeneralLoginInterface {
  prop: string
}

export { Responce } from "./twoFactorAuth.ts"

并且仅从 login.ts 导入(注意:这也可以扩展到实际代码(类函数等))。

如果子类的成员具有冲突的名称(当 twoFactorAuth.tsaccessTokenLogin.ts 都具有 Response 类型时),请考虑将它们导出到不同的命名空间下,例如 here


请注意,这只是一个意见,您可以在任何地方导入类型,而不必担心循环依赖,因为类型无论如何都会在运行时被剥离。

关于typescript - 模块的所有接口(interface)和类型声明都应该放在一个文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61852791/

相关文章:

Angular 2 更新 : no gui update after async data input

typescript - Typescript 类型定义中 Jasmine 的重复签名

Angular2 等待 HttpPost 响应

javascript - 使用 Typescript 将一个对象文字映射到另一个对象文字

typescript - 如何将 DynamoDB AttributeMap 类型映射到接口(interface)?

javascript - Angular 6 : Date undefined

TypeScript:从文字 getter 访问外部 "this"

reactjs - 只有在使用 'IterableIterator<number>' 标志或使用 '--downlevelIteration' 或更高的 '--target' 时,才能迭代类型 'es2015'

typescript - 为具有多个入口点的库导出声明

javascript - Typescript 如何声明一个返回其调用对象的方法(this)