TypeScript 标准库:完整概述
TypeScript 是 JavaScript 的一个严格类型超集,可编译为普通 JS。然而,它的强大之处不仅在于类型系统。内置的 TypeScript 标准库提供了用于类型、工具和元编程的强大工具。在本文中,我们将解析 TypeScript 标准库的关键组件,展示其使用示例,并提供实用建议。
什么是 TypeScript 标准库?
TypeScript 标准库是一组随编译器一起提供的内置类型、接口和工具。它包括:
- 基本类型(
string、number、boolean、any、unknown、never、void)。 - 工具类型(
Partial、Required、Pick、Omit、Record等)。 - 装饰器(用于元编程的实验性特性)。
- 命名空间(
namespace)和模块。 - 扩展类型(
Promise、Map、Set、WeakMap、WeakSet)。 - 用于操作 DOM 的类型(通过
lib: ["dom"]包含)。
工具类型:库的核心
工具类型允许在不重复代码的情况下转换现有类型。让我们看看最流行的几种:
Partial 和 Required
interface User { id: number; name: string; email: string;}
// 所有字段变为可选type PartialUser = Partial<User>;
// 所有字段变为必填(如果之前是可选的)type RequiredUser = Required<PartialUser>;Pick 和 Omit
interface Product { id: number; title: string; price: number; description: string;}
// 只选择需要的字段type ProductPreview = Pick<Product, 'id' | 'title'>;
// 排除不需要的字段type ProductWithoutDesc = Omit<Product, 'description'>;Record 和 Readonly
// 创建一个具有特定键和值的对象type UserRoles = Record<'admin' | 'user' | 'guest', string>;
// 使所有字段变为只读type ReadonlyUser = Readonly<User>;使用 Promise 和异步操作
TypeScript 提供了用于处理异步代码的内置类型:
async function fetchData(): Promise<string> { return "数据已加载";}
// Promise 结果的类型type DataType = Awaited<ReturnType<typeof fetchData>>; // string装饰器:TypeScript 中的元编程
装饰器是一种特殊的声明,允许注解和修改类、方法、属性和参数。它们被广泛用于框架中(Angular、NestJS)。
类装饰器示例
function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype);}
@sealedclass Calculator { add(a: number, b: number): number { return a + b; }}方法装饰器示例
function log(target: any, key: string, descriptor: PropertyDescriptor) { const original = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`方法 ${key} 被调用,参数为:${args}`); return original.apply(this, args); }; return descriptor;}
class UserService { @log getUser(id: number): string { return `用户 ${id}`; }}命名空间
命名空间有助于组织代码并避免