TypeScript 中的 lib

说明 lib 如何决定 TypeScript 默认提供哪些内建 API 类型定义,以及为什么 Node 项目经常要关心 DOM 类型是否被引入。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 lib

一句话定义

lib 用来决定 TypeScript 默认把哪些 JavaScript / 平台 API 的类型定义加入当前项目。

核心机制 / 工作原理

TypeScript 不只理解语法,还会预置一批标准库类型。

例如:

  • Math
  • Map
  • Promise
  • document
  • window

这些是否存在、以什么类型存在,和 lib 直接相关。

官方文档说明:

  • TypeScript 会根据 target 默认带上一组 lib
  • 也可以手动覆盖它们

最小例子 / 最小场景

默认依赖 target

如果你没有手写 lib,TypeScript 会根据 target 推出一组默认库。

手动指定

{
  "compilerOptions": {
    "target": "ES2020",
    "lib": ["ES2020", "DOM"]
  }
}

常见适用场景

浏览器前端

通常需要:

  • DOM
  • 对应版本的 ES*

Node 项目

很多时候并不希望默认带上浏览器 DOM 类型,以避免:

  • 误以为 document / window 在运行时可用

边界与易混淆点

lib 管的是“可见的类型 API”,不是 polyfill

哪怕类型里有 PromiseMap,运行时环境也未必真的有对应实现。

targetlib 可以拆开

官方文档明确说,两者可以 mix and match。

这意味着你可以:

  • 用较新的语法目标
  • 同时手动控制暴露哪些标准库类型

参考信息

创建于 2026/5/15 更新于 2026/5/27