TypeScript 基础类型详解与实战(三)

TypeScript 作为一种静态类型语言,提供了丰富的类型系统,帮助开发者更准确地描述数据结构和意图,从而提高代码的可读性和健壮性。本文将详细介绍 TypeScript 中的基础类型,并通过具体实例展示其应用。

1. 基础类型概述

TypeScript 中的基础类型包括 string、number、boolean、array、tuple、enum、any、void、null、undefined、never、object、union 和 unknown。这些类型覆盖了大多数常见的数据需求,使开发者能够更精确地控制变量的类型。

1.1 string 字符串

字符串类型用于表示文本数据。TypeScript 支持单引号 '、双引号 " 和模板字符串 三种形式。

typescript let message: string = "Hello, TypeScript!";

模板字符串 是一种强大的字符串表示方式,支持多行文本和变量插值。

typescript let name: string = "Alice"; let greeting: string = Hello, ${name}! Welcome to TypeScript.; console.log(greeting); // 输出:Hello, Alice! Welcome to TypeScript.

1.2 number 数字

数字类型用于表示整数和浮点数。TypeScript 中没有单独的整数类型,所有数字都统一为 number 类型。

typescript let age: number = 25; let temperature: number = 36.5;

1.3 boolean 布尔值

布尔类型用于表示逻辑值 true 和 false,常用于条件判断。

typescript let isCompleted: boolean = false;

1.4 array 数组

数组类型用于表示一组相同类型的元素。可以使用 type[] 或 Array<type> 两种方式表示。

typescript let numbers: number[] = [1, 2, 3]; let names: Array&amp;lt;string&amp;gt; = ["Alice", "Bob"];

1.5 tuple 元组

元组类型用于表示已知数量和类型的数组。每个元素可以是不同的类型,适合表示固定结构的数据。

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

1.6 enum 枚举

枚举类型用于定义一组命名常量。默认情况下,枚举的值从 0 开始递增。

typescript enum Color { Red, Green, Blue, } let favoriteColor: Color = Color.Green;

1.7 any 任意类型

任意类型 any 用于表示任何类型。适合不确定数据类型的情况,但使用时需谨慎,因为 any 会绕过类型检查。

typescript let randomValue: any = 42; randomValue = "hello";

1.8 void 空类型

空类型 void 用于没有返回值的函数。声明变量时,类型 void 意味着只能赋值 null 或 undefined。

typescript function logMessage(message: string): void { console.log(message); }

1.9 null 和 undefined

null 和 undefined 分别表示“空值”和“未定义”。在默认情况下,它们是所有类型的子类型,但可以通过设置 strictNullChecks 严格检查。

typescript let empty: null = null; let notAssigned: undefined = undefined;

1.10 never 类型

never 类型表示不会有返回值,通常用于抛出错误或进入无限循环的函数。

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

1.11 object 对象类型

对象类型 object 用于表示非原始类型的值,适用于复杂的对象结构。

typescript let person: object = { name: "Alice", age: 30 };

1.12 union 联合类型

联合类型表示一个变量可以是多种类型之一。通过 | 符号实现。

typescript let id: string | number; id = "123"; id = 456;

1.13 unknown 不确定的类型

unknown 类型与 any 类似,但更严格。必须经过类型检查后才能赋值给其他类型变量。

typescript let value: unknown = "Hello"; if (typeof value === "string") { let message: string = value; }

1.14 类型断言 (Type Assertions)

类型断言用于手动指定一个值的类型,常用于无法推断的情况。可以使用 as 或尖括号语法。

typescript let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;

1.15 字面量类型

字面量类型用于限制变量只能拥有特定的值,常用于结合联合类型定义变量的特定状态。

typescript let direction: "up" | "down" | "left" | "right"; direction = "up";

2. 实战示例

以下示例展示了 TypeScript 中主要基础类型的定义和使用,模拟一个用户对象和相关的操作函数。

2.1 定义枚举类型

typescript enum Role { Admin, User, Guest, }

2.2 定义用户接口

typescript interface User { id: number; username: string; isActive: boolean; roles: Role[]; contact: [string, number]; }

2.3 获取用户信息

typescript function getUserInfo(user: User): string { return User ID: ${user.id}, Username: ${user.username}, Roles: ${user.roles.join(", ")}; }

2.4 打印用户信息

typescript function printUserInfo(user: User): void { console.log(getUserInfo(user)); }

2.5 查找用户

`typescript function findUser(id: number | string): User | undefined { // 模拟从数据库中查找用户 const users: User[] = [ { id: 1, username: "Alice", isActive: true, roles: [Role.Admin], contact: ["alice@example.com", 1234567890] }, { id: 2, username: "Bob", isActive: false, roles: [Role.User], contact: ["bob@example.com", 9876543210] }, ];

return users.find(u => u.id === id); } `

2.6 抛出错误

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

2.7 使用任意类型

typescript let anyValue: any = "Hello"; anyValue = 42; anyValue = true;

2.8 使用未知类型

typescript let unknownValue: unknown = "Hello"; if (typeof unknownValue === "string") { let message: string = unknownValue; }

2.9 使用空值

`typescript let emptyValue: null = null; let undefinedValue: undefined = undefined; ``

3. 总结

通过本文的介绍,我们详细了解了 TypeScript 中的基础类型及其应用场景。TypeScript 的类型系统不仅提高了代码的可读性和健壮性,还减少了运行时错误的发生。希望本文能帮助你在日常开发中更好地利用 TypeScript 的强大功能。

如果你有任何疑问或建议,欢迎在评论区留言交流!