从另一个TypeScript包

时间:2016-06-20 11:51:33

标签: typescript

我已经写过并且npm发布了这个:https://github.com/justin-calleja/pkg-dependents

现在我在打字稿中写这个包:https://github.com/justin-calleja/update-dependents

我想在update-dependents中重用pkg-dependents(IndexInfoDict)中定义的类型,我想检查是否有更好的方法:

在pkg-dependents的index.ts中:

import { IndexInfoDict } from './interfaces';

export interface IndexInfoDict extends IndexInfoDict {};

即。我导入了IndexInfoDict接口以在pkg-dependents的index.ts中注释一个函数,但是因为我想在update-dependents中使用这个相同类型,我被迫导出另一个扩展自己的IndexInfoDict ...

这似乎是一个奇怪的模式,但编译器现在很高兴。

注意:共享类型的其他步骤:

  1. 在tsconfig.json中使用"声明":true,因此为每个导出内容的.ts文件生成.d.ts文件。
  2. 在pkg-dependents的package.json中使用" typings":(path-to-generated-index.d.ts),这样你就可以在你的其他Typescript项目中导入index.js了它将通过index.d.ts。
  3. 知道索引文件的API
  4. 要实际导入该类型并重复使用它:import { IndexInfoDict } from 'pkg-dependents/lib/index.d.ts';
  5. 有人可以确认没有更好的方法吗?

    我想要的,但不知道是否可能,是:

    1. 不必以自我扩展的方式导出IndexInfoDict(我只是导出类型......这很有意义。)
    2. 以某种方式避免使用' pkg-dependents / lib / index.d.ts'在进口。它可以只是import { pkgDependents, IndexInfoDict } from 'pkg-dependents' ...但是因为' pkg-dependents'指的是一个JS文件(pkg-dependents' s,package.json的主要是./lib/index.js),我怀疑这是否可行。
    3. 修改1:

      我想的越多,上面的2越多(避免&#39; pkg-dependents / lib / index.d.ts&#39;)似乎是不可能的。我希望tsc有一些神奇的东西来弄清楚来自&#39; index.d.ts&#39;即使&#39; index.js&#39;正在导入 - 这样我只能从一个Typescript项目中import { pkgDependents, IndexInfoDict } from 'pkg-dependents'而只能从JS项目中import { pkgDependents } from 'pkg-dependents'(没有tsc魔法,JS也没有类型,所以IndexInfoDict已经出来了)。< / p>

      目前,我必须:

      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获取main函数使用的类型。

1 个答案:

答案 0 :(得分:3)

在index.ts中,您可以执行以下操作:

export { IndexInfoDict } from "./interfaces;

这将从主文件中导出界面。

相关问题