any、unknown、never、void 各自的语义和适用场景?

类型 含义 场景
any 关闭类型检查,可做任何操作 迁移旧代码、确实未知时(尽量少用)
unknown 类型未知但安全:使用前必须收窄 替代 any,接收任意输入(如 JSON.parse 返回值)
never 永不出现的值 函数抛出异常/死循环;穷尽检查(exhaustive)
void 函数无返回值 回调/事件处理函数返回占位
const data: unknown = JSON.parse(raw)
if (typeof data === 'object') { /* 收窄后才可用 */ }

function fail(msg: string): never { throw new Error(msg) }
// 穷尽检查
function assertNever(x: never): never { throw new Error('unexpected ' + x) }

unknown 是更安全的 any:禁止未检查就操作。

同分类其他题目