类型检查
Type Checking
中级通用类型检查(Type Checking)是检查代码中的值是否按预期类型使用的过程,例如有没有把字符串当数字相加。它能在开发阶段发现一部分数据用错方式的问题,减少这类错误进入运行中的产品。
你可能会说:「帮我看看这些字段有没有被当成错误的类型使用,最好在运行前就能发现问题。」
读之前建议先了解
动手看看结算价格的类型检查
checkout.ts
01 let price: number;
02 price = "128";
类型错误不能将 string 类型的值赋给 number 类型的变量。引号里的 128 是文本,不是数字。
变量声明的类型
赋给变量的值
切换变量声明的类型和赋给它的值,看看编辑器何时标红。类型检查比较的是值的类型,而不只是它看起来写了什么。
price 声明为数字时,128 可以赋给它;"128" 虽然看着像数字,却是文本,因此会提前报错。
要点类型检查会帮你看出什么问题?
- 1
检查值和操作能否对上
我们给订单金额做加法时,代码需要拿到数字。如果某处传来字符串,类型检查就可能指出这里的用法不匹配。这样你能沿着数据传递路径,找到该转换或修改定义的位置。
- 2
检查结果取决于已知信息
类型检查依据代码里的类型声明和推断结果工作。如果你把一个值笼统地标成“任意类型”,检查工具就很难判断后续用法是否合理。所以类型写得准确,检查才更有帮助。
- 3
检查通过不等于运行正确
一个数字即使通过了类型检查,也可能是负的订单数量。类型检查关注的是值能否按这种类型使用,不负责证明业务结果正确。我们仍需要测试和业务规则来检查这些情况。
容易混淆的地方
类型检查和数据校验最容易混淆:前者依据代码中已知的类型信息,检查你怎样使用一个值;后者检查运行时拿到的真实数据,例如接口返回的价格是否真是数字、是否大于零。代码规范检查则偏向代码写法和约定。它们能配合使用,但不能互相替代。
什么时候用
适合用
- AI Agent 改了订单计算逻辑,你想在合并前发现字段类型与函数参数不匹配。
- 前后端约定接口字段后,你想检查页面代码有没有把可为空的字段直接当作必有值使用。
- 重构用户资料表单时,你想找出受字段类型变化影响的调用位置。
不适合用
- 你要确认接口实际返回的数据是否缺字段或格式错误;这得在运行时做数据校验。
- 你要确认优惠券过期后不能抵扣;这是业务规则,适合写测试用例验证。
- 你只是想统一缩进和引号写法;交给代码格式化工具更直接。
练一练选一个答案,看看解释
你在做结算页。接口声明价格是数字,但线上偶尔返回字符串,导致总价计算异常。你会让 AI Agent 怎么处理?
让 AI 帮你做复制给 AI Agent 直接用
请对结算页相关代码运行类型检查,找出价格、数量和总价计算中的类型不匹配,说明每处错误的数据来源并修复。接口返回值属于运行时数据,请另行检查是否需要在入口做数据校验;不要靠改成任意类型消除报错。