TypeScript 类型体操——从 any 泛滥到 strict 模式

去年刚接手这个项目的时候,代码里到处都是 any。一个 API 返回 res.data,我不知道它是什么类型,就写 (res.data as any).items。当时的理由是:"反正后端是我自己写的,我知道返回什么。"

三个月后,我改了一个后端接口的字段名。IDE 没有报任何红色波浪线,前端安静地跑着,直到用户说列表里商品名不显示了。我才意识到:不是好的一个项目。把 productName 改成了 name,但前端省掉了 as any 后的所有类型检查。那天下午我把 tsconfig.json 里的 strict 打开了,VSCode 瞬间爆了四百多个错误。但我没关——每个红波浪线都是我欠的类型债务。

实用的类型技巧

不是所有场景都需要写成类型体操。Prisma 自动生成的类型是宝藏——不要再手写 interface SalesOrder,直接从 @prisma/client 导。API 响应用泛型包装。工具函数用 Record 比 any 好一百倍。如果 as any 出现在三个以上的文件,说明这里可以抽象出来。

还债后的清爽

花了两周把 any 从项目里清干净。现在的体验是:改一个后端字段,前端自动报错,我在部署前就知道哪里需要同步修改。这不是 TypeScript 在限制我——是过去的我在帮现在的我兜底。

在汕头,老房子翻修的时候,老师傅会先把墙皮刮干净,看到砖缝再动手。写代码也一样:把 any 刮掉,才看得见真正的结构。

← 返回首页