Skip to content

unknown、any 与 never:顶层类型和底层类型的分工

主题边界

  • anyunknownnever 经常被一起问,但它们位于类型系统的不同位置。
  • 理解它们要从类型安全与控制流推断两个维度看。

机制与流程

  • any 会关闭大部分类型检查,并在赋值与访问上产生传染性。
  • unknown 表示值存在但尚未确认类型,使用前必须缩窄或断言。
  • never 表示不可能出现的值,常出现在抛错函数、无限循环、穷尽性检查和被排空的联合类型中。

关键差异

  • unknown 是安全顶层类型,any 是逃生舱;两者都能接收任意值,但只有 unknown 会阻止未确认访问。
  • never 不是空值,而是类型层面的不可达。

边界条件

  • 把接口返回值先写成 any 往往会让错误一路扩散到业务层。
  • 穷尽性检查失效常常意味着联合类型设计或控制流分支漏掉了成员。

工程落点

  • 对不可信输入优先使用 unknown + 运行时校验,而不是 any
  • 在 reducer、状态机和错误处理代码里引入 never 检查能显著提升重构安全性。

相关主题