模块化开发、容器化开发

使用微服务架构或 Mono Repo 架构中的问题

拆包不合理

一、类型的定义

(如 Typescript 中的 interface、type,或者请求/响应,参数/返回等 DTO),不应当放置到一个底层的通用包中。这样会导致一处业务修改,联动项目代码、底层包代码需要修改,然后需要发布包、更新依赖版本等,非常麻烦。

同时,大部分的类型定义是不具备复用的可能的。比如数据库 Schema,会有一些多余的不可操作的字段,如 id、时间戳、状态等,所以在 create 方法中,传入的参数,可能是 Partial<SchemaEntity>(也可能会有一些生成字段之类的特殊情况)。在接口请求参数中,更是会和数据库 create 方法的参与差异很大,比如说密码,用户输入是明文,存到数据库中是密文 + SALT。等等。返回值亦是如此。

为减少重复代码量和修改,和保证结构的稳定性,可以参考 TypeScript Handbook 中的一些小技巧:

阅读更多