六维教程

TypeScript 基础类型

上一篇我们学习了类型注解——用 : 类型 的方式约束变量。现在让我们深入了解 TypeScript 的 7 种基础类型。

TypeScript 基础类型包括 7 种:

  • string:文本数据,使用单引号、双引号或反引号(模板字符串)包裹。
  • number:数字类型,包含整数、浮点数、十六进制、二进制、八进制等。
  • boolean:只有两个值:truefalse
  • null:表示空值,通常用于表示未初始化的变量。
  • undefined:表示未定义的变量,通常用于表示函数没有返回值。
  • void:表示没有返回值的函数,通常用于表示副作用函数。
  • any:表示任意类型,不进行类型检查,不建议使用。

类型详解

string

文本数据,使用单引号、双引号或反引号(模板字符串)包裹。

// 字符串类型
let username: string = "张三";
let greeting: string = 'Hello';
let template: string = `欢迎回来,${username}`;

// 函数参数也适用
function logMessage(msg: string): void {
    console.log(msg);
}
logMessage("服务器启动成功");

实际场景:用户名、标题、描述、API 地址等文本数据。

number

数字类型,包含整数、浮点数、十六进制、二进制、八进制等。

let age: number = 25;
let price: number = 99.9;
let hex: number = 0xff;      // 255
let binary: number = 0b1010; // 10
let octal: number = 0o755;   // 493

// 计算时会自动类型推断
let total = price * 2;   // TypeScript 自动推断 total 为 number 类型

实际场景:年龄、价格、数量、ID、时间戳等数值数据。

boolean

只有两个值:truefalse

let isLoggedIn: boolean = true;
let isAdmin: boolean = false;
let isActive: boolean = true;

// 常用于条件判断
if (isLoggedIn) {
    console.log("已登录");
}

// 函数返回布尔值
function checkPermission(role: string): boolean {
    return role === "admin";
}

实际场景:开关状态、权限标识、数据是否加载完成等。

null 和 undefined

在 TypeScript 中,nullundefined 是独立的类型,但需要注意严格模式下的行为。

// 默认情况下,null 和 undefined 可以赋值给任何类型
let name: string = "张三";
name = null;   // 不报错(在非严格模式下)
name = undefined; // 不报错(在非严格模式下)

但在实际项目中,我们强烈建议开启 strict: truetsconfig.json 中的配置),开启后,nullundefined 只能赋值给它们自己的类型或联合类型:

// 开启 strict 后
let name: string = "张三";
// name = null;   // ❌ 报错

// 如果确实需要可空,使用联合类型
let nullableName: string | null = "张三";
nullableName = null;   // ✅ 允许

实际场景nullundefined 通常用于表示“没有值”,但在 TypeScript 中推荐用 undefined 表示未定义,用 null 表示有意为空。

any —— 万能“逃生通道”

any 表示“任意类型”,相当于关闭了该变量的类型检查

let something: any = "hello";
something = 123;      // ✅ 不报错
something = true;     // ✅ 不报错
something = { name: "张三" }; // ✅ 不报错

// 可以调用任何方法,不会有类型提示
something.toUpperCase();  // 运行时报错风险!

问题:使用 any 就失去了 TypeScript 的保护,容易在运行时出现难以追踪的错误。

原则any 应该作为最后的选择,只在以下场景使用:

  • 迁移老项目 JavaScript 代码时临时使用
  • 第三方库没有类型定义时的过渡方案
  • 确实无法确定类型的特殊场景

更好的做法:使用 unknown(后续章节会介绍),它比 any 更安全。

void —— 表示“没有返回值”

void 用于函数,表示该函数不返回任何值(或返回 undefined / null)。

// 没有 return 语句
function logMessage(msg: string): void {
    console.log(msg);
}

// 有 return,但没有返回值
function showAlert(msg: string): void {
    console.log(msg);
    return;
}

// 如果 return 了其他值,会报错
function wrong(): void {
    return 123;  // ❌ 报错:类型 number 不能赋值给 void
}

实际场景:日志函数、事件处理函数、副作用函数(只做某件事,不返回结果)。

常见问题

number 和 string 的自动转换

JavaScript 中,numberstring 在某些操作下会自动转换(如 + 号),但 TypeScript 不会自动转换类型,需要你显式处理

let num: number = 100;
let str: string = "200";

// ❌ 报错:类型 "string" 不能赋值给类型 "number"
// let result: number = num + str;

// ✅ 显式转换
let result1: number = num + Number(str);   // 300
let result2: string = String(num) + str;   // "100200"

基础类型速查表

类型 写法 说明 示例值 使用建议
字符串 : string 文本字符串 "hello", 'world', `hi` 文本数据都用它
数字 : number 整数和浮点数 42, 3.14, -10, 0xff 数值数据都用它
布尔值 : boolean 真 / 假 true, false 开关标识都用它
空值 : null 有意为空 null 联合类型中使用
未定义 : undefined 未赋值 undefined 联合类型中使用
任意类型 : any 关闭类型检查 任何值 尽量少用,最后选择
无返回值 : void 函数不返回任何值 无返回值的函数
  • nullundefined 在开启 strict: true 后不能直接赋值给其他类型,需要通过联合类型(如 string | null)使用。
  • any 会失去类型保护,非必要不使用。
上一篇
TypeScript 类型注解
下一篇
TypeScript 数组与元组