TypeScript基本类型

一、前言

TypeScript 是 JavaScript 的一个超集,它通过添加静态类型系统帮助开发者写出更健壮、可维护性更强的代码。而理解 TypeScript 的基本类型 是学习 TypeScript 的第一步。

本文将带你全面了解 TypeScript 中的常用基本类型,包括:

  • ✅ 数值类型
  • ✅ 字符串类型
  • ✅ 布尔类型
  • ✅ null 与 undefined
  • ✅ any 与 unknown
  • ✅ never 与 void
  • ✅ 数组类型
  • ✅ 元组类型

并通过大量代码示例帮助你掌握其使用方式。

二、TypeScript 是什么?

✅ 定义:

TypeScript 是由微软开发的一种开源编程语言,它是 JavaScript 的超集,增加了 静态类型检查机制 和面向对象特性。

⚠️ 核心优势:

  • 编译时错误检测,减少运行时错误
  • 提供更好的代码提示与重构支持
  • 支持现代 JS 特性及未来提案

三、TypeScript 基本类型一览

类型 示例 描述
number let age: number = 25; 所有数字类型(整数/浮点)
string let name: string = "Tom"; 字符串类型
boolean let isDone: boolean = true; 布尔类型
null let value: null = null; 空值
undefined let x: undefined = undefined; 未定义值
any let data: any = "任意类型"; 不进行类型检查
unknown let input: unknown; 需要显式类型检查
never function error(): never { throw new Error(); } 永不返回的函数
void function sayHello(): void { console.log("Hello"); } 表示无返回值
array let list: number[] = [1, 2, 3]; 数组类型
tuple let person: [string, number] = ["Tom", 25]; 固定长度、固定类型的数组

四、数值类型 number

TypeScript 中所有数字都属于 number 类型,包括整数、浮点数、十六进制、八进制、二进制等。

let age: number = 25;
let price: number = 9.99;
let hex: number = 0xf00d;
let binary: number = 0b1010;

五、字符串类型 string

字符串类型用于表示文本信息,可以用单引号或双引号定义。

let name: string = "Alice";
let message: string = `欢迎,${name}`;
console.log(message); // 输出:欢迎,Alice

六、布尔类型 boolean

布尔类型只有两个值:truefalse,常用于条件判断。

let isLogin: boolean = false;
if (isLogin) {
    console.log("用户已登录");
} else {
    console.log("请先登录");
}

七、null 与 undefined

这两个类型分别表示“空值”和“未定义”,它们是所有类型的子类型。

let user: string | null = null; // 可为 null 的字符串
let score: number | undefined = undefined; // 可为 undefined 的数值

// 使用场景:异步获取数据
function fetchData(): string | null {
    return null;
}

八、any 类型

any 类型表示允许该变量为任意类型,相当于关闭了类型检查。

⚠️ 虽然方便,但应谨慎使用!

let value: any = "字符串";
value = 123;
value = true;

value.someMethod(); // 不会报错,但可能运行时报错

九、 unknown 类型

unknownany 的安全替代方案。使用前必须进行类型检查。

let input: unknown;

input = "hello";
input = 123;

if (typeof input === "string") {
    console.log(input.toUpperCase());
} else if (typeof input === "number") {
    console.log(input.toFixed(2));
}

十、never 类型

never 表示永远不会发生值的类型,常见于抛出异常或无限循环的函数。

function throwError(message: string): never {
    throw new Error(message);
}

function infiniteLoop(): never {
    while (true) {}
}

十一、 void 类型

void 表示没有返回值的函数,或者变量不能赋任何值(除了 undefined)。

function sayHello(): void {
    console.log("Hello");
}

let result: void = undefined;

十二、数组类型

TypeScript 支持两种方式声明数组类型:

✅ 方式一:元素类型后加 []

let numbers: number[] = [1, 2, 3];

✅ 方式二:泛型语法 Array<元素类型>

let fruits: Array = ["apple", "banana"];

十三、元组类型 tuple

元组表示一个已知数量和类型的数组,每个位置上的类型是固定的。

let person: [string, number] = ["Tom", 25];

// 错误写法:
person[1] = "25"; // 报错:不能将类型 'string' 分配给类型 'number'

十四、实际应用场景示例

✅ 示例1:用户登录状态管理

type User = {
    id: number;
    username: string;
    isLoggedIn: boolean;
    lastLogin?: Date; // 可选属性
};

const currentUser: User = {
    id: 1,
    username: "admin",
    isLoggedIn: true
};

✅ 示例2:处理 API 返回数据

function fetchUserData(): string | null {
    const response = Math.random() > 0.5 ? "{id: 1}" : null;
    return response;
}

const userData = fetchUserData();
if (userData !== null) {
    console.log(JSON.parse(userData));
}

十五、注意事项与最佳实践

场景 建议
是否推荐使用 any ❌ 不推荐,除非确实需要动态类型
如何替代 any ✅ 推荐使用 unknown 或具体类型
null vs undefined ✅ 明确区分使用场景
是否可以修改元组长度? ❌ 不推荐,元组长度应固定
是否推荐类型推断? ✅ 推荐使用类型推断提高代码简洁性

十六、总结对比表:TypeScript 基本类型一览

类型 示例 是否推荐使用 说明
number let age: number = 25; ✅ 是 所有数字类型
string let name: string = "Tom"; ✅ 是 字符串
boolean let isOk: boolean = true; ✅ 是 布尔值
null let val: null = null; ✅ 是 空值
undefined let x: undefined = undefined; ✅ 是 未定义
any let data: any = "任意类型"; ❌ 否 应尽量避免
unknown let input: unknown; ✅ 是 安全替代 any
never function error(): never { throw new Error(); } ✅ 是 永不返回值
void function log(): void {} ✅ 是 无返回值
array let list: number[] = [1, 2, 3]; ✅ 是 数组
tuple let person: [string, number] = ["Tom", 25]; ✅ 是 固定类型和顺序

十七、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

你可能感兴趣的:(TypeScript基本类型)