TypeScript 最有价值的地方是描述边界,而不是装饰每一行代码。
在多站点工作区中,边界本身就是产品。应用需要自由表达自己的内容,共享软件包则需要约束,避免一个站点的假设泄漏到另一个站点的运行时中。
类型应明确约定
最有用的类型会回答这些问题:
- 一篇文章需要哪些信息,才能在所有位置渲染?
- 哪些字段只是可选的展示细节?
- 允许哪些分类?
- 共享组件可以作出哪些假设?
这些看似工程问题,其实是产品问题。
本地内容留在本地
如果组件只属于一个应用,就应留在该应用中。过早放入共享软件包会制造虚假承诺:这个抽象已经适合复用。
共享代码应由反复使用来证明其价值。
避免过度灵活的数据
依赖字符串约定的数据容易起步,却难以维护。固定分类虽然不那么灵活,但让导航、路由、标签和 RSS 输出更容易推理。
目标不是最大程度的可配置性,而是新增文章或页面时减少意外。
朴素也是一种功能
好的边界是朴素的,让下一次改动显得顺理成章。
可维护性通常意味着:系统会告诉你工作应该放在哪里。
相关文章
继续探索我们的思考。