我可以采用什么样的共享机制来允许两个单独的打字稿项目沿着通用接口进行通信?
基本思想是我有一个主要项目将实现接口,并且将有另一个项目消耗它们。但是我不希望其中任何一个项目依赖于另一个项目。
具体来说:我如何创建和分发合同库(如果适用,可能还有补充它们的任何功能)。 TypeScript生态系统中是否存在已建立或正在出现的约定,以通过NPM分发接口库?
答案 0 :(得分:3)
只需在单独的文件中定义接口,或者收集文件interfaces.ts
(或interfaces.d.ts
)中的所有共享接口。两个项目都可以引用此文件,您可以在两个项目中拥有该文件的副本。
TypeScript与C#不同,你需要引用基础程序集(尽管这将在C#中用assembly neutral interfaces修复)。
但要注意:TypeScript没有专门的运行时来确保您的接口匹配。由于一切仍然是JavaScript,因此在运行时必须确保接口匹配。如果一个项目使用了另一个版本的接口以及以前版本中不存在的属性,那么您仍然会遇到麻烦。
答案 1 :(得分:3)
TypeScript生态系统中是否存在已建立或正在出现的约定,以通过NPM分发接口库
使用package.json中的typescript
键指向定义文件:
https://github.com/DefinitelyTyped/tsd#link-to-bundled-definitions
答案 2 :(得分:0)
数年之后,还有许多项目,今天对这个问题的最简单答案就是将.d.ts
发布到npm包中并使用它!该项目可以从打字稿源构建,甚至可以包含构建代码。
当然,现在很多这样的答案是在TypeScript和JS社区成熟并聚在一起建立这些约定之后很久的。