TypeScript 标准库:完整概述

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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}`; }}


命名空间

命名空间有助于组织代码并避免

推荐