作为开发人员需要了解的 13 个 TypeScript 库和运行时

TypeScript:开发人员的得力助手

TypeScript 已成为开发领域中备受欢迎的语言之一。在 2023 年的 Stackoverflow 调查中,近 40% 的受访者表示他们在使用 TypeScript 进行开发。

作为一种强类型编程语言,TypeScript 基于 JavaScript 构建,并继承了 JavaScript 的所有特性。更重要的是,它引入了新的功能,使得在早期阶段就能捕获代码错误。TypeScript 代码最终会被转换为 JavaScript,从而使其能够在浏览器或 Node.js 等运行环境中顺利执行。

TypeScript 在 JavaScript 开发中的重要性

虽然 TypeScript 不是 JavaScript 开发的必需品,但它在许多方面都发挥着至关重要的作用:

  • 对于刚开始学习 JavaScript 的开发人员,TypeScript 可以帮助他们构建更清晰、更有条理的代码结构。
  • 类型安全功能使得维护代码和及早发现潜在错误变得更加容易。
  • TypeScript 可以与 JavaScript 无缝互操作,方便开发过程。

TypeScript 的生态系统中包含各种库和运行时。库是一系列预先编写的代码,可直接用于项目中,而运行时则为 TypeScript 代码提供了在浏览器之外运行的环境。

根据不同的需求,存在各种类型的库。例如,某些库提供表单处理功能,其他库用于数据验证,还有一些库可以用于访问外部服务如 API。以下是一些非常值得了解的 TypeScript 库和运行时:

Zod

Zod 是一个强大的模式声明和验证库,它可以消除重复的声明,并将简单的类型组合成复杂的数据结构。

特点

  • 零依赖:Zod 不需要任何其他软件包即可运行,这使得它非常易于安装和使用。
  • 轻量级:经过压缩后,Zod 库只有 8kb 大小,非常适合用于创建快速应用程序。
  • 灵活:Zod 可以用于验证各种数据类型,并支持不同的验证方法。
  • 适用于纯 JavaScript:Zod 不仅适用于 TypeScript,还可以与纯 JavaScript 代码一起使用。

Fastest Validator

Fastest Validator 是一个快速的 JavaScript 和 TypeScript 验证库,可以在现代浏览器以及 Deno 和 Node.js 等运行时中使用。这个库没有任何依赖项,并且自带 20 多个内置的验证器。

特点

  • 速度极快:正如其名称所示,Fastest Validator 的验证速度非常快,每秒可以执行高达 800 万次验证。
  • 支持自定义验证器:您可以使用此库在表单中添加自定义逻辑。
  • 支持严格的对象验证:通过严格的对象验证,Fastest Validator 确保对象只包含其架构中定义的属性。
  • 可自定义的错误消息:您可以自定义此库显示的错误消息,以使其符合您的品牌或偏好。

GOJS

GoJS 是一个 Web 框架,允许开发人员使用 TypeScript 和 JavaScript 绘制交互式图表。您可以使用这个库来构建交互式流程图、设计工具以及可视化地绘制组织结构图等。

特点

  • 多重支持:GoJS 可以在浏览器和运行时环境(例如 Node.js 和 Puppeteer)中运行。
  • 自动布局:该库提供了各种内置布局,您可以选择和自定义这些布局以满足您的需求。
  • 可自定义的权限和事件:当用户执行某些操作时,您可以执行自定义通知或逻辑。
  • 可扩展的工具:GoJS 拥有一系列工具,您可以使用它们来扩展其功能。

Type Fest

Type Fest 是一个 TypeScript 类型的集合。您可以将所需的类型直接复制粘贴到项目中,或者将它们添加为依赖项。

特点

  • 开源:这个类型集合是免费且开源的。您还可以通过添加新类型来为其做出贡献。
  • 多种类型:Type Fest 平台中的类型数量在不断增加。一些基本类型包括 Primitive、Class、Constructor、AbstractClass、TypedArray 和 ObservableLike。
  • 跨平台:您可以在浏览器或 Node.js 等运行时环境中 使用 Type Fest。

Jest

Jest 是一个用于测试 TypeScript 和 JavaScript 项目的框架。该框架旨在帮助您使用功能丰富且易于使用的 API 编写测试,并快速获得测试结果。

特点

  • 易于使用:Jest 作为 Node.js 包提供。安装后,您可以创建一个 jest.config.js 文件并开始使用这个测试框架。
  • 快速且安全:Jest 测试框架确保您的测试具有唯一的全局状态,从而可以并行运行测试。
  • 出色的 API:Jest 拥有完善的文档 API,可以轻松使用和测试使用此框架的项目。
  • 令人敬畏的例外:在 TypeScript 代码库中进行测试时可能会发生失败。当测试失败时,Jest 会提供丰富的上下文来解释失败原因。

TypeDoc

TypeDoc 是一个可以用于生成 TypeScript 项目文档的库。该库将 TypeScript 代码中的注释转换为 JSON 模型或呈现的 HTML 文档。TypeDoc 可作为 Node 模块使用,并且还有 CLI 版本。

特点

  • 易于使用:您可以将 TypeDoc 作为 NPM 包安装,然后它将通过 tsconfig.json 文件找到您项目的入口点。您还可以指定多个入口点。
  • 文档齐全:TypeDoc 具有详细的文档来帮助您入门。它还附带了在为 TypeScript 项目生成文档时可以遵循的示例。
  • 可与现代框架一起使用:您可以将 TypeDoc 与以 TypeScript 作为基础语言的 React 等库一起使用。

Bun

Bun 是一个快速的 TypeScript 和 JavaScript 运行时。 WSL、macOS 和 Linux 都支持这个运行时环境。它提供了一个本地捆绑器、一个测试运行器、一个包管理器和一个转译器。

特点

  • NPM 兼容:Bun 通过其内置的包管理器支持所有 npm 包。
  • 支持 Node.js API:您可以将 Bun 与 Web API(例如 ReadableStream、WebSocket 和 Fetch)一起使用。
  • 用 ZIG 编写:Bun 是用一种名为 ZIG 的低级编程语言编写的。这种语言专为速度而设计。

Deno

Deno 是另一个 TypeScript 和 JavaScript 运行时。该平台对 TypeScript 编程语言具有一流的支持,因此您无需在配置上花费大量时间。

特点

  • 出色的一体化工具:Deno 提供了多种工具,例如代码格式化程序、内置 linter、测试运行程序和 IDE 集成。
  • 无忧部署:Deno 允许您使用一行代码运行部署,无需服务器配置。您还可以使用您喜欢的程序托管 TypeScript 项目。
  • 基于 Chrome 的 V8 引擎构建:您可以利用此 JavaScript 引擎的快速性能。
  • 允许权限检查:您可以在 TypeScript 项目中提供允许列表,Deno 将仅访问指定的文件、环境变量和网络主机。

Prettier

Prettier 是一个针对 TypeScript 和其他编程语言的固执己见的代码格式化程序。Prettier 旨在节省您的时间,因为它会在您保存代码时自动格式化代码。

特点

  • 易于与编辑器集成:您可以将 Prettier 与代码编辑器集成,以便在编写代码时对其进行格式化。您可以将其与 Visual Studio Code、Vim、Emacs 和 Sublime Text 等编辑器集成。
  • 在线可用:您可以使用在线版本来测试或快速制作原型。
  • 与各种工具兼容:您可以将 Prettier 与基于 JavaScript 的语言和库(例如 TypeScript、Flow、JSON 和 JSX)一起使用。您还可以将其与 CSS、SCSS、Less 和 Styled-components 等样式语言一起使用。

Prisma

Prisma 是一个 TypeScript 和 Node.js 对象关系映射 (ORM)。ORM 是数据库和应用程序之间的软件层。ORM 提供了一种将应用程序中的对象映射到数据库中的表的方法。

特点

  • 全面:Prisma 适合 SQL 资深人士和数据库初学者。自动完成功能使得使用这个 ORM 变得很容易,几乎不需要参考文档。
  • 无忧迁移:Prisma Migrate 可以自动迁移 Prisma 架构。您可以完全控制这些文件,因为它们是完全可定制的。
  • 支持协作:Prisma 允许您邀请团队成员并设置权限和控制级别。
  • 可视化数据库浏览器:使用此浏览器探索和可视化您的表。您可以浏览表、遍历关系、编辑数据、分页和过滤。

Phaser

Phaser 是一个快速且免费的 2D 游戏框架,用于构建可以在 Web、移动设备和桌面上运行的 HTML5 游戏。这个框架支持 WebGL 和 Canvas 渲染。

特点

  • 九片游戏对象:通过此功能,您可以显示可垂直和水平拉伸但保留固定大小角的基于纹理的对象。
  • WebGL 和 Canvas 支持:Phaser 可以根据浏览器支持在 WebGL 和 Canvas 渲染器之间切换。
  • 插件支持:Phaser 的核心仅限于基本类,而插件系统则处理其余功能。
  • 相机支持:该库支持多相机。您可以拥有可针对任何屏幕进行扩展的额外摄像头。

Tiny Invariant

Tiny-invariant 是一个支持以 sprintf 风格将参数传递给“invariant”函数的库。“不变量”是一个带有值的函数;如果传递给函数的值为真值,则函数不会抛出异常。但是,如果值为假值,则不变函数会抛出异常。

特点

  • 支持类型缩小:Tiny-invariant 在正确缩小 TypeScript 和流程的类型方面非常有用。
  • :该库没有任何依赖项。安装完成后,您可以立即开始使用。
  • 支持不同的构建:您可以将 Tiny-invariant 与 CommonJS、EcmaScript 模块和通用模块定义一起使用。

ESBuild

ESBuild 是一个快速的 TypeScript、JavaScript、JSX 和 CSS 捆绑器。您可以在本地计算机上安装此捆绑器,或者直接在浏览器中尝试。

特点

  • 速度极快:ESBuild 是用 Go 编写的,Go 是一种快速编译语言。然而,大多数其他捆绑器都是用 JavaScript 编写的,速度不如 Go 快。
  • 简单的 API:最常用的 ESBuild API 是转换和构建。这两个 API 拥有完善的文档,您可以轻松遵循。
  • 支持不同的内容类型:除了该捆绑器内置对我们提到的语言的支持外,它还支持 JSON、文本、二进制、Base64、数据 URL、外部文件和空文件。
  • 可通过插件扩展:您可以使用插件 API 将代码注入到构建过程的某些部分中。存在为不同目的而设计的不同插件。

为开源 TypeScript 库做贡献的好处

我们上面讨论的大多数 TypeScript 库和运行时都是开源的。对于一个被称为开源的项目,源代码必须在开源许可证下公开可用,并允许贡献者。

以下是一些您可以考虑为开源项目做出贡献的原因:

  • 建立你的作品集:一个优秀的开发人员应该有一系列项目可以向面试官展示。您可以通过为开源项目做贡献来构建这样的作品集。
  • 与其他开发人员建立联系:开源项目允许您与世界各地的开发人员建立联系。
  • 回馈社区:如果您的学习路径主要基于开源项目,您可以贡献一些内容来回馈社区。
  • 获得经验:开源项目可以让您在处理实际项目时获得实践经验。

结论

如果您决定在下一个项目中使用 TypeScript,您现在有许多库和运行时可供选择。库的选择将取决于项目的性质和您的偏好。

我们还有一篇关于 JavaScript 与 TypeScript 的文章,您可以查看。