You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何TypeScript会对不可达的default返回语句报错?

为什么返回false会触发类型错误?
  • 你的doSomeAction函数声明返回void,TypeScript对void的规则很明确:函数要么完全不写return语句,要么return undefined(或者return后面空着)。返回false是明确返回了一个boolean类型的值,和void的要求完全不匹配,所以必然会触发类型报错。
为什么用neverReached函数就没问题?
  • 当你把switch的所有Status分支都覆盖后,进入default分支时,status的类型会被TypeScript推断为never——因为所有可能的联合类型成员都被处理完了,理论上这个分支永远不会执行。
  • 接收never类型参数的neverReached函数,它的返回类型也是never。TypeScript里never是所有类型的子类型,自然也包括void,所以在返回void的函数里返回never类型的结果是合法的,不会触发报错。
  • 更关键的是,一旦你给Status新增了字面量但没在switch里加对应的case,此时default分支的status就不再是never了,传入neverReached函数会直接触发类型错误,正好实现了你“新增未处理分支时警告”的需求。

内容的提问来源于stack exchange,提问作者kal_stackO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:27:04