DefinitelyTyped
TypeScript 生态中最大的高质量类型定义仓库,为大量 JavaScript 库提供 @types 类型声明,让开发者在 TS 项目中获得类型提示与检查。
爱鲜报评分
0.0
0 人评分
开源 · —
#TypeScript
#类型定义
#@types
#声明文件
#开源协作
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/ 目录下。贡献流程大致为:
- 在本地项目中实际使用并验证类型改动
- 修改或新增对应
types/xxx/index.d.ts - 补充类型测试用例
- 提交 PR,等待 CI 校验与维护者审核
仓库强调新增类型应源于真实使用需求,不接受无实际使用动机的批量提交。
注意事项
- 仓库只保证对近两年内 TypeScript 版本的测试支持
- 类型包体积与数量庞大,本地克隆和依赖安装需要一定时间
- 遇到类型问题可先在 TypeScript 社区 Discord 的 Definitely Typed 频道反馈
评论
- 暂无评论,来写第一条吧。