typescript教程:unknown类型 作者:马育民 • 2026-04-28 19:09 • 阅读:10001 # 介绍 TypeScript 自带 **unknown** 类型,代表:**未知的、暂时不确定是什么类型的数据**。 # 特点 ### **所有类型,都可以赋值给 unknown** ```ts let val: unknown val = 100 // 数字 ✅ val = "你好" // 字符串 ✅ val = { name: ''}// 对象 ✅ val = [] // 数组 ✅ ``` ### **unknown 不能直接使用** 不能直接打点、调用方法、赋值给普通类型,TS 会直接报错,防止乱写代码: ```ts let val: unknown // 全部报错 ❌ val.length val.toFixed() val.name = "小明" let str: string = val ``` # 怎么使用 两种合法方式: ### 方式1:先做类型判断(最安全) ```ts let val: unknown if (typeof val === "string") { // 确定是字符串,才能调用 length console.log(val.length) } if (typeof val === "number") { console.log(val.toFixed(2)) } ``` ### 方式2:类型断言(告诉TS我知道是什么类型) ```ts let val: unknown // 强行指定为字符串类型 const text = val as string ``` # unknown 和 any 最大区别 - **any**:摆烂模式,关闭所有类型检查,随便写、随便调用,容易藏 bug - **unknown**:安全模式,允许存放任意值,但**限制随意操作**,必须校验类型才能使用 # 适用场景 - 接口返回的原始数据 - 本地缓存读取的数据 - 函数接收「不确定类型」的参数 - 不想用 any、又要兼容多种类型时 --- # 总结 1. `unknown` = 不确定类型的安全容器 2. 什么值都能装,但不能直接乱用 3. 比 `any` 严格、更安全,企业开发优先用 `unknown` 代替 `any` 原文出处:http://malaoshi.top/show_1GW3DNY4rKPR.html