Appearance
unknown、any 与 never:顶层类型和底层类型的分工
主题边界
any、unknown、never经常被一起问,但它们位于类型系统的不同位置。- 理解它们要从类型安全与控制流推断两个维度看。
机制与流程
any会关闭大部分类型检查,并在赋值与访问上产生传染性。unknown表示值存在但尚未确认类型,使用前必须缩窄或断言。never表示不可能出现的值,常出现在抛错函数、无限循环、穷尽性检查和被排空的联合类型中。
关键差异
unknown是安全顶层类型,any是逃生舱;两者都能接收任意值,但只有unknown会阻止未确认访问。never不是空值,而是类型层面的不可达。
边界条件
- 把接口返回值先写成
any往往会让错误一路扩散到业务层。 - 穷尽性检查失效常常意味着联合类型设计或控制流分支漏掉了成员。
工程落点
- 对不可信输入优先使用
unknown+ 运行时校验,而不是any。 - 在 reducer、状态机和错误处理代码里引入
never检查能显著提升重构安全性。