403 字
1 分钟
重构的艺术:如何写出同事不骂街的 TypeScript 代码
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
接手屎山代码(Spaghetti Code)是每个程序员的噩梦。为了不让你的代码成为别人的噩梦,我们来聊聊 TypeScript 项目中的重构艺术。
1. 拒绝 any,拥抱类型
any 是 TypeScript 的逃生舱,但用多了就变成了 AnyScript。
- 坏味道:
function process(data: any) { ... } - 重构:即使不知道确切类型,也请使用
unknown,迫使你在使用前进行类型收窄(Type Narrowing)。或者定义一个interface,哪怕只有部分字段。
2. 卫语句 (Guard Clause) 代替嵌套 if
不要写“箭头型”代码(嵌套太深)。
Bad:
function processUser(user: User) { if (user != null) { if (user.isActive) { if (user.hasCredit) { // 核心逻辑... } } }}Good:
function processUser(user: User) { if (!user || !user.isActive || !user.hasCredit) return;
// 核心逻辑在主层级,清清爽爽}3. 魔法数字 (Magic Numbers) 必须死
不要在代码里直接写 if (status === 2)。鬼知道 2 是什么意思?是“成功”?还是“失败”?还是“处理中”?
重构:使用 enum 或 const 常量。
enum OrderStatus { Pending = 0, Processing = 1, Completed = 2}
if (order.status === OrderStatus.Completed) { ... }4. 函数单一职责
一个函数应该只做一件事。
如果你发现你的函数名是 fetchDataAndProcessAndSave(),那它绝对太长了。
- 把“获取数据”拆出去。
- 把“处理逻辑”拆出去。
- 把“保存”拆出去。 主函数只负责像指挥官一样调用它们。
5. 使用可选链 (Optional Chaining)
Bad:
if (user && user.address && user.address.street) { console.log(user.address.street);}Good:
console.log(user?.address?.street);不仅代码短了,而且可读性极佳。
总结
好的代码就像一篇好文章,读起来行云流水。重构不是为了炫技,而是为了让未来的自己(和同事)少掉几根头发。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
重构的艺术:如何写出同事不骂街的 TypeScript 代码
https://levifree.dpdns.org/posts/typescript-refactoring/ 部分信息可能已经过时
相关文章 智能推荐
1
技术文档写作实战:把一次排错变成别人能复现的解决方案
文档写作 用问题边界、最小步骤、验证证据与失败分支,写出真正能帮助读者的技术文章
2
技术博客如何维护旧文章:用版本、验证日期和失效处理保住内容可信度
内容运营 旧教程不会自动过期,但会自动失去可信度;这套维护流程帮助你优先更新真正影响读者的页面
3
Astro 本地预览验收清单:发布前用 15 分钟发现导航、资源与交互问题
Astro 一份适用于静态博客的小型回归流程,覆盖构建诊断、关键入口、动态筛选和资源加载
4
Astro 静态站图片 404 排查:从引用路径到浏览器回归的完整流程
Astro 用页面实际请求而不是目录猜测定位图片缺失;覆盖 public 路径、筛选后渲染与上线前检查
5
OpenClaw 对接飞书机器人:配置与上线注意事项(含插件模式说明)
AI 新版通常可直接接入;若你的环境是旧版本或精简构建,再按插件模式安装


