团队里零个 @ts-ignore,却有一百一十七个没人禁的双重断言
来源:dev.to — 2026-11-01
📋 概述
这支团队对 @ts-ignore 的禁令执行得很成功:610 个源文件里一次都没出现。但作者换了个关键词搜 as unknown as,得到 117 处。零个显式压制、一百一十七个隐式压制,这个比例不是巧合,而是「禁令只覆盖了大家记得去 grep 的语法」必然造出的结果。更关键的是这批断言分布极不均匀,集中在 admin 路由、worker 反序列化、i18n 映射这类边界上——运行时的形状第一次碰到编译期类型,而没有人写解析器。作者没有喊「全部清零」,而是加了一道带预算的 CI 闸门、要求 allowlist 每条都写理由,并把三个高频套路各自的十分钟替代写法列出来。
🔑 核心要点
- as unknown as 是 as any 的隐身版:先擦成 unknown 是诚实的,再断言回目标类型才是撒谎;两步合起来与 as any 等价,却能过 no-explicit-any。
- 它天然躲过代码评审:评审看到的是一个类型断言,而不是一条压制注释,没有红色信号可抓。
- AI 助手最爱用它:当模型被要求「让类型错误消失」,这是改动最小的写法,于是这个数字在 AI 参与的支线上持续增长。
- 用预算代替清零:第一天就硬性归零只会得到一个 117 行的没人看的 allowlist;改成只降不升的额度,并让每条豁免都写清理由,数字才保持诚实。
💡 金句
Zero explicit suppressions, a hundred and seventeen implicit ones.
译:零个显式压制,一百一十七个隐式的。
👍 0
👎 0
← 返回 dev.to 首页