-
我在 TypeScript 里把接口返回定义成成功结果和错误结果的联合类型本以为这下两种情况的字段我都能随便访问了,结果一访问成功结果才有的 data 字段编译器就报错说这个属性在错误结果上不存在,我对着明明是联合类型为什么不让我访问的报错懵了很久,最后才搞懂联合类型在值上是二选一在能安全访问的成员上反而只剩两者的交集的深度复盘
我写接口调用封装,想用 TypeScript 联合类型优雅表达成功和失败两种返回:interface SuccessResult { ok:true; data:string } 和 interface ErrorResult { ok:false; message:string },type ApiResult = SuccessResult | ErrorResult。结果一访问 result…- 0
- 0
-
一个用联合类型加 switch 处理多种形状的函数,在我新增了一种类型后悄悄漏掉了它、TS 却一声不吭,直到线上才暴露:一次 TypeScript 穷尽检查缺失的深度复盘
给图形联合类型加了三角形,在类型定义和创建处都改了、自信上线,结果三角形面积算错。排查发现那个算面积的 switch 忘了加 triangle 的 case、走了 default 返回 0,而 TS 编译全程一声不吭。根因是 TS 默认不对联合类型做穷尽性检查——一个 switch 漏处理某成员它不报错,加新成员后漏改的地方静默遗漏,我对 TS'改类型自动揪出要改处'的期待落空…- 0
- 0
-
联合类型新增了一种成员却忘了在 switch 里加 case,编译一声不吭这类消息全悄悄丢了:TypeScript 穷尽性检查避坑复盘
这是一个加了功能旧功能却悄悄漏了的事故,而且漏得无声无息直到用户反馈才发现。我们有一个消息处理器负责处理几种类型的消息用一个联合类型定义,用一个 switch 分门别类地处理它们。某次需求产品要新增一种消息类型,我很自然地在那个联合类型的定义里加上了新类型然后改了相关逻辑,编译通过测试我新加的功能也正常就上线了。可上线后陆续有用户反馈某一类消息没反应像石沉大海,排查半天才发现:我新增了消息类型却忘…- 3
- 0
可辨识联合
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!



