看起来在TypeScript中有两种使用接口的方式:我可以在普通的.ts文件中定义它们并导入它们,或者我可以在.d.ts文件中定义它们,让编译器自动从node_modules/@中找到它们或者通过在tsconfig.json中为typeRoots添加相关路径,并且它们变得“魔术般”可用。使用TypeScript声明(* .d.ts)和接口的正确方法是什么?
目前我有两个项目:一个客户端(React)和一个服务器(Express),都是用TypeScript编写的。我在两个项目中都使用了某些接口,为了避免项目之间的依赖关系,我将通用接口提取到一个单独的项目中,并声明为声明文件。然后我说这个项目作为一个开发依赖这种方式:
"@types/my-definitions": "git+ssh://[email protected]/myaccount/my-definitions.git"
这样打字稿编译器会自动从node_modules/@类型找到接口,我没有导入接口。
我的问题是,这是一个很好的做法,或者我应该有普通的.ts文件中的接口,将项目作为普通依赖项导入,并显式导入我正在使用的接口?每种方法的优缺点是什么?