AX 爱鲜报

DefinitelyTyped

TypeScript 生态中最大的高质量类型定义仓库,为大量 JavaScript 库提供 @types 类型声明,让开发者在 TS 项目中获得类型提示与检查。

爱鲜报评分

0.0

0 人评分

51k

星数

是

中文

TypeScript

主语言

是

活跃

22158

贡献者

人工分析

EDITORIAL

推荐理由

这是 TypeScript 开发者几乎绕不开的基础设施:只要用到没有内置类型的 npm 包,通常就会通过 @types 安装这里的声明。项目由微软与社区共同维护,规模庞大、流程规范,适合作为了解类型声明编写与开源协作的入口。

适用场景

  • 为无类型的 npm 包补充 TypeScript 类型
  • 学习 .d.ts 声明文件编写
  • 参与大型开源项目贡献
  • 排查第三方库类型报错

优点

  • 覆盖 npm 生态绝大多数常用库
  • 由社区与微软共同维护,更新及时
  • 有完善的 CI 校验与发布流程
  • 贡献流程文档清晰,适合新手练手

缺点

  • 仓库体量巨大,克隆与安装耗时
  • 类型质量依赖贡献者,个别包可能滞后
  • 只支持近两年内的 TypeScript 版本
  • PR 审核周期可能较长
上手难度 进阶

项目简介

DefinitelyTyped 是 TypeScript 官方生态中的类型声明仓库,为大量没有内置类型的 JavaScript 库提供高质量的 .d.ts 声明文件,并以 @types/xxx 的形式发布到 npm。

核心用途

  • 为第三方库补齐 TypeScript 类型,获得补全与静态检查
  • 统一管理社区维护的类型声明,避免各库自行维护造成碎片化
  • 作为学习声明文件写法的参考样例库

安装与使用

通常通过 npm 安装对应类型包:

npm install --save-dev @types/node

对于带作用域的包,需要去掉 @ 并在作用域后加双下划线,例如 @babel/preset-env 对应 @types/babel__preset-env。

在非模块环境下,可能需要显式引用:

/// <reference types="node" />

贡献方式

仓库采用 pnpm monorepo 结构,每个类型包位于 types/ 目录下。贡献流程大致为:

  1. 在本地项目中实际使用并验证类型改动
  2. 修改或新增对应 types/xxx/index.d.ts
  3. 补充类型测试用例
  4. 提交 PR,等待 CI 校验与维护者审核

仓库强调新增类型应源于真实使用需求,不接受无实际使用动机的批量提交。

注意事项

  • 仓库只保证对近两年内 TypeScript 版本的测试支持
  • 类型包体积与数量庞大,本地克隆和依赖安装需要一定时间
  • 遇到类型问题可先在 TypeScript 社区 Discord 的 Definitely Typed 频道反馈

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。