从另一个TypeScript包导入TypeScript类型
我已经撰写并发布了以下内容: 现在我正在用Typescript编写这个包: 我想在updatedependents中重复使用pkg dependents(IndexInfoDict)中定义的类型,我想检查是否有比这更好的方法: 在pkg dependents的index.ts中:从另一个TypeScript包导入TypeScript类型,typescript,Typescript,我已经撰写并发布了以下内容: 现在我正在用Typescript编写这个包: 我想在updatedependents中重复使用pkg dependents(IndexInfoDict)中定义的类型,我想检查是否有比这更好的方法: 在pkg dependents的index.ts中: import { IndexInfoDict } from './interfaces'; export interface IndexInfoDict extends IndexInfoDict {}; i、 我
import { IndexInfoDict } from './interfaces';
export interface IndexInfoDict extends IndexInfoDict {};
i、 我正在导入IndexInfoDict接口来注释pkg dependents的index.ts中的函数,但是因为我想在更新dependents中使用相同的类型,我被迫导出另一个扩展自身的IndexInfoDict
这似乎是一种奇怪的模式,但编译器现在很高兴
注意:为共享该类型而采取的其他步骤:
import{IndexInfoDict}来自'pkg dependents/lib/index.d.ts'代码>
有人能证实没有更好的方法吗 我想,但不知道是否可能,是:
import pkgDependents from 'pkg-dependents';
import { IndexInfoDict } from 'pkg-dependents/lib';
那么好吧…也许没有什么神奇的。那么1呢?除了导出一个扩展自身的导入类型之外,还有没有一种更容易混淆的导出导入类型的方法
(我在pkg dependents中不止一个地方使用IndexInfoDic。其中一个恰好是index.ts,主要导出函数。因此,我希望它在index.ts之外,但从index.ts导出,因此它在index.d.ts中生成,用户从index.d.ts获得主函数使用的类型)。在index.ts中,您可以执行以下操作:
export { IndexInfoDict } from "./interfaces;
这将从主文件中导出接口。我不明白为什么必须重新定义
IndexInfoDict
?为什么不能从“/interfaces”中导入{IndexInfoDict};任何需要的地方?@MattLishman你是对的。我的理由是“我希望pkg依赖项的所有用户都需要在一个地方”。该位置不能是index.js(接口类型不会出现).So/lib/index.t.ds是第二个最佳位置。用户仍然需要2个导入stmt,但至少不需要记住接口dir的路径。我导入IndexInfoDict并在index.ts中再次导出它,因此它将在index.d.ts中生成,用户有一个位置获取主代码,还有一个相关位置获取主代码类型(他们只需要知道它在/lib/index.t.ds中的位置)。@MattLishman我继续说,我意识到为了保留index.t.ds中的主要类型,我需要导入/导出其他类型,而IndexInfoDict是由这些类型生成的(只留下一个只在内部使用的类型)。也许这不值得,但我喜欢在项目pkg依赖项(src/interfaces)中为所有类型设置一个位置,然后可以选择在index.t.ds中导出哪些类型。但也许这没有意义?也许所有类型都应该是“public”…好得多,谢谢!对于任何阅读本文的人来说都是值得的,我决定将所有类型放在src/interfaces中的pkg dependents中(甚至是在同一项目中没有跨文件使用的类型)。然后在index.ts中,我导入/导出index.js导出中使用的类型及其依赖类型(例如,由IndexInfoDict组成的类型)。