前端知库

any、unknown 和 never 分别适合什么场景?

分清绕过检查、未知输入和不可能出现的值。

参考答案
  • any 会绕过大量类型检查,适合迁移时的临时边界,但会削弱安全性。
  • unknown 可以接收任意值,使用前必须做类型收窄,适合外部 JSON 等未知输入。
  • never 表示不可能出现的值,常用于永不正常返回的函数和穷尽性检查。
TypeScript
function assertNever(value: never): never {
  throw new Error(`未预期的值: ${value}`);
}

类型声明不会验证运行时数据。即使把接口响应断言为某个类型,仍需要在不可信边界进行实际校验。