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

Ale*_*zzi 6 interface typescript

我可以采用哪种共享机制来允许两个单独的打字稿项目沿公共接口进行通信?

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

特别是:如何创建和分发合同库(可能的话,还可以包括补充合同的任何功能)。TypeScript生态系统中是否存在任何已建立或正在出现的约定,以通过NPM分发接口库?

Ale*_*zzi 6

几年后和许多项目之后,今天这个问题最简单的答案就是简单地将 a 发布.d.ts到 npm 包并使用它!该项目可以从打字稿源构建,甚至包括构建的代码。

当然,现在很多答案都是在 TypeScript 和 JS 社区成熟并共同建立这些约定很久之后才得到的。


Dyn*_*lon 5

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

TypeScript 不像 ie C# 那样你必须引用底层程序集(尽管这将在 C# 中通过程序集中性接口修复)。

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