TypeScript-面试-any-unknown与never
2026年10月16日·Admin·1 次浏览
面试题:any、unknown、never 区别?为什么推荐用 unknown?
any
- 关闭类型检查:可赋给任意类型、任意操作,失去 TS 保护。
- 仅适合渐进迁移或与遗留 JS 交界处,应最小范围使用。
unknown
- 顶层安全类型:表示「不知道类型」,不能直接当具体类型用。
- 使用前必须收窄:
typeof、instanceof、类型谓词、as(谨慎)。
function f(x: unknown) {
if (typeof x === "string") return x.toUpperCase()
}
面试答:替代 any 接收外部数据,配合校验库更稳。
never
- 没有值的类型:抛错函数、 exhaustive
switch的剩余分支、[]的元素类型等。 - 用于穷尽检查:若
switch未覆盖所有联合成员,在default里把参数标为never可编译期报错。