Interface 在两个应用程序之间共享接口?
我可以设置什么共享机制来允许两个单独的typescript项目沿着公共接口进行通信 基本的想法是,我有一个主要的项目来实现接口,还有一个项目使用它们。然而,我不希望任何一个项目依赖于另一个 具体来说:我如何创建和分发一个合同库(如果适用,可能还有任何补充合同库的功能)。Interface 在两个应用程序之间共享接口?,interface,typescript,Interface,Typescript,我可以设置什么共享机制来允许两个单独的typescript项目沿着公共接口进行通信 基本的想法是,我有一个主要的项目来实现接口,还有一个项目使用它们。然而,我不希望任何一个项目依赖于另一个 具体来说:我如何创建和分发一个合同库(如果适用,可能还有任何补充合同库的功能)。 TypeScript生态系统中是否存在通过NPM分发接口库的既定或新兴约定?只需在单独的文件中定义接口,或在文件interfaces.ts中收集所有共享接口(或interfaces.d.ts)。两个项目都可以引用此文件,您可以在
TypeScript生态系统中是否存在通过NPM分发接口库的既定或新兴约定?只需在单独的文件中定义接口,或在文件
interfaces.ts
中收集所有共享接口(或interfaces.d.ts
)。两个项目都可以引用此文件,您可以在两个项目中都有该文件的副本
TypeScript不像C#那样必须引用底层程序集(尽管这将在C#with中修复)
但要注意:TypeScript并没有专门的运行时来确保接口匹配。由于一切仍然是JavaScript,所以在运行时必须确保接口匹配。如果一个项目使用另一个版本的接口,其属性在以前的版本中不存在,那么您仍然会遇到麻烦
TypeScript生态系统中是否存在通过NPM分发接口库的既定或新兴约定
使用package.json中的typescript
键指向定义文件:
几年后,许多项目之后,今天这个问题最简单的答案就是将
.d.ts
发布到npm包并使用它!这个项目可以从typescript源代码构建,甚至包括构建代码
当然,在TypeScript和JS社区成熟并共同建立这些约定很久之后,现在这个答案中有很多已经出现。有没有通过NPM分发接口的实践?是的,但不是通过NPM,而是通过使用repo的tsd工具。但是,只有当实现接口的库可供其他人使用,而不是供您内部使用时,才应该添加接口。对于内部使用,您可以设置自定义repo,并且如果将tsd工具指向该repo,则仍然可以使用该工具。还请注意,tsc编译器可以为您创建库的.d.ts文件(其中还将包含导出类的类型注释)。即使使用此解决方案,您似乎仍将维护两个单独的文件。理想的解决方案是只管理位于中心位置的一个,并让您的项目导入它。到目前为止,我找到的唯一合理的解决方案是在自己的项目中构建接口,并将它们保存在NPM或其他repo中,您可以通过NPM安装引用接口项目/模块。这样一来,唯一的缺点就是必须随时更新所有项目。