TypeScript 标准库:全面概述
TypeScript 不仅仅是 JavaScript 的超集,添加了静态类型检查。该语言还附带了一个强大的标准库,扩展了开发者的能力。在本文中,我们将详细解析 TypeScript 标准库的关键组件,展示使用示例,并解释它们如何简化开发。
1. 内置数据类型
TypeScript 标准库包含了所有 JavaScript 的基本类型,并为其添加了严格的类型检查和新的抽象:
number、string、boolean— 原始类型;null和undefined— 特殊值;any— 禁用类型检查;unknown—any的安全替代方案;never— 用于永远不会返回的函数的类型;void— 无返回值。
// 内置类型使用示例let age: number = 25;let name: string = "安娜";let isActive: boolean = true;let data: unknown = { id: 1 };let error: never = (() => { throw new Error("错误"); })();2. 工具类型 (Utility Types)
TypeScript 提供了一组内置的工具类型,允许您转换现有类型,而无需编写复杂的结构:
Partial<T>— 使类型T的所有字段变为可选;Required<T>— 使所有字段变为必填;Readonly<T>— 禁止修改字段;Pick<T, K>— 从类型中选取指定的键;Omit<T, K>— 从类型中排除指定的键;Record<K, T>— 创建一个键为K、值为T的类型。
interface User { id: number; name: string; email: string;}
// 使所有字段变为可选type PartialUser = Partial<User>;
// 仅选取 id 和 nametype UserPreview = Pick<User, "id" | "name">;
// 创建一个字典type UserMap = Record<string, User>;3. 集合操作:Map, Set, WeakMap, WeakSet
标准库包含了 ES6+ 集合的类型化版本。TypeScript 在使用这些结构时会自动推断类型:
Map<K, V>— 键值对集合;Set<T>— 唯一值集合;WeakMap<K extends object, V>— 具有“弱”引用的 Map 类似物;WeakSet<T extends object>— 用于对象的 Set 类似物。
// 类型化的 Mapconst userRoles = new Map<number, string>();userRoles.set(1, "admin");userRoles.set(2, "user");
// 类型化的 Setconst uniqueIds = new Set<number>([1, 2, 3, 3]); // {1, 2, 3}4. Promise 与异步编程
TypeScript 通过 Promise<T> 和 async/await 关键字完全支持异步编程。Promise 的类型化允许精确指定返回的数据类型:
async function fetchUser(id: number): Promise<User> { const response = await fetch(`/api/users/${id}`); return response.json(); // 返回值的类型为 User}
// 使用fetchUser(1).then(user => { console.log(user.name); // name 是字符串});5. DOM 与浏览器 API 操作
TypeScript 标准库包含了 DOM API 的完整类型定义。这使得可以安全地操作元素、事件和其他浏览器对象:
图书馆中也有
推荐