-
我给两个含义完全不同的 ID 都用了 string 类型,结果把商品 ID 当成用户 ID 传了进去,TypeScript 却一声没吭,我排查了大半天才搞懂结构化类型的深度复盘
我的用户 ID 和商品 ID 含义完全不同,但底层都用 string。某次手滑把商品 ID 传给了要用户 ID 的 getUser 函数,本以为号称类型安全的 TS 会拦下,结果它一声没吭、放行了,bug 一路跑到深处才因查不到用户而爆。深究才懂:TS 用的是结构化类型(看结构),不是 Java/C# 的名义类型(看名字)——userId 和 productId 结构都是 string、结构一样就…- 0
- 0
-
我把订单 ID 当成用户 ID 传进了查用户的函数,TypeScript 却一声不吭:结构化类型系统给我上的那一课的踩坑复盘
我给 UserId 和 OrderId 定义了不同的类型,以为 TS 会守住"别把订单 ID 当用户 ID 用"这条线。可手滑把订单 ID 传进查用户的函数,TS 却一声不吭、编译通过,运行时拿订单 ID 去用户表查了个寂寞。根因是 TypeScript 用的是结构化类型——按"结构"而非"名字"判断兼容,而两个 ID 结构都是 {val…- 0
- 0
结构化类型
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


