TypeScript 词条目录
前端Wiki/TypeScript/基础/基础类型

原始类型 any 与 unknown

TS 的基础类型覆盖 JS 全部原始类型:string、number、boolean、null、undefined、symbol、bigint,外加两个特殊成员:any(放弃检查)与 unknown(安全版的 any)。

any 与 unknown 的区别是态度:any 是"我不在乎",赋值给谁、调什么方法都行,检查器直接闭眼;unknown 是"我还不知道",必须先做类型检查才允许使用。接口返回、JSON.parse 这类外部数据入口,一律推荐 unknown。

  • 原始类型全小写:string / number / boolean,别写成 String 大写
  • any 关闭检查;unknown 强迫先缩小再使用,是 any 的安全替代
  • never 表示永不存在(函数永远抛错/死循环),用于穷尽检查
TS
let userName: string = '小明';
let age: number = 18;
let isVip: boolean = true;
let nothing: null = null;
let big: bigint = 10n;

// any:躺平,编译通过但运行时可能炸
let data: any = 'hello';
data.toFixed(2);        // 不报错,但字符串没有 toUpperCase 意义上的安全

// unknown:先检查再用
let raw: unknown = '{"a":1}';
if (typeof raw === 'string') {
  console.log(raw.length);   // ✓ 已缩小到 string
}
// raw.length;            // ❌ 直接用会报错
JS
// 类型擦除后只剩值
let userName = '小明';
let age = 18;
let isVip = true;
let raw = '{"a":1}';
if (typeof raw === 'string') {
  console.log('raw 长度:', raw.length);   // 7
}
console.log(userName, age, isVip);        // 小明 18 true
本节要点unknown 是 any 的安全版:外部数据先 unknown,检查通过才放行。
🔗 相关词条JavaScriptHTML闭包