给公共类型里的 User 加了一个必填的 tenantId,本地跑 tsc 报出 42 个文件错误,全是 TS2741 Property 'tenantId' is missing。改完一个还剩四十个。乍看像缓存或者权限的锅,追下去往往不是。
npx tsc --noEmit 2>&1 | grep TS2741 | cut -d'(' -f1 | sort -u | wc -l
grep -rn "tenantId" src/types/user.ts
追下去是这么回事:必填字段会让所有构造该类型的地方同时不满足,包括测试里的假数据和各页面的映射函数。类型是编译期的契约,改一处等于一次性改了所有调用方的前提。
「类型变更影响面」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
具体做法是,先确认这个字段是不是所有场景都真有值;不是就先标成可选 用的时候再判空;确实必填就先加字段 再分几个提交逐个补构造点;用查找引用一次列出所有构造位置。
验收就看一点,错误数清零 每个构造点都显式传了 tenantId 测试数据也跟着补上。
