代码之家  ›  专栏  ›  技术社区  ›  Alexander Trauzzi

在两个应用程序之间共享界面?

  •  9
  • Alexander Trauzzi  · 技术社区  · 10 年前

    我可以设置什么共享机制来允许两个独立的类型脚本项目沿着公共接口进行通信?

    基本想法是,我有一个主要项目将实现接口,还有一个项目将使用它们。然而,我不希望任何一个项目都依赖于另一个项目。

    具体来说:我怎样才能创建和分发一个合同库(如果适用的话,可能还有补充它们的任何功能)。 TypeScript生态系统中是否有通过NPM分发接口库的既定或新兴约定?

    3 回复  |  直到 10 年前
        1
  •  6
  •   Alexander Trauzzi    4 年前

    几年后,在许多项目中,今天对这个问题的最简单的答案是简单地发布一个 .d.ts 到npm包并消费它!这个项目可以从typescript源构建,甚至包括构建的代码。

    当然,在TypeScript和JS社区已经成熟并共同建立这些约定之后,现在的很多答案都已经很长时间了。

        2
  •  4
  •   Dynalon    10 年前

    只需在单独的文件中定义接口,或在文件中收集所有共享接口 interfaces.ts (或 interfaces.d.ts ). 两个项目都可以引用此文件,您可以在两个项目中都有该文件的副本。

    TypeScript不像C#那样必须引用底层程序集(尽管这将在C#中用 assembly neutral interfaces ).

    但请注意:TypeScript没有专用的运行时来确保接口匹配。由于一切仍然是JavaScript,所以在运行时必须确保接口匹配。如果一个项目使用的是另一个版本的接口,其属性在以前的版本中不存在,那么您仍然会遇到麻烦。

        3
  •  3
  •   basarat    10 年前

    TypeScript生态系统中是否有通过NPM分发接口库的既定或新兴约定

    使用 typescript 键入package.json以指向定义文件:

    https://github.com/DefinitelyTyped/tsd#link-to-bundled-definitions