如何通过npm使用个人GitHub上未合并的DefinitelyTyped类型定义?
不用typings,纯npm方案使用未合并的DefinitelyTyped PR类型定义
好问题!typings确实早就被废弃了,咱们完全可以靠npm本身的能力解决这个需求,给你分享几个实用的方案:
方案1:直接安装GitHub PR分支的类型包
你可以直接通过npm安装自己fork的DefinitelyTyped仓库中对应PR分支的类型目录,把它作为@types/[包名]的替代。比如你的PR在MyUserName/DefinitelyTyped的patch-4分支,针对async的类型,执行以下命令:
npm install @types/async@github:MyUserName/DefinitelyTyped/types/async#patch-4 --save-dev
这样npm会把你分支里的async类型定义安装到项目的node_modules/@types/async下,TypeScript会自动识别这个类型包,和正常安装官方@types/async的用法完全一致。
方案2:本地链接调试(适合频繁修改PR的场景)
如果需要在本地修改PR的类型定义并实时调试,用npm link更方便:
- 先克隆你自己fork的DefinitelyTyped仓库,切换到PR对应的
patch-4分支:git clone https://github.com/MyUserName/DefinitelyTyped.git cd DefinitelyTyped/types/async git checkout patch-4 - 在
types/async目录下执行npm link,把这个类型包注册到全局npm链接:npm link - 回到你的项目目录,执行
npm link @types/async,这样项目就会引用本地的类型定义文件了。之后你修改本地的类型文件,项目里会实时生效。
方案3:直接复制类型文件到项目(临时快速方案)
如果只是临时用一下,不想折腾npm安装,直接把PR里的index.d.ts(还有相关的类型文件如果有的话)复制到项目的某个目录,比如src/types/async,然后在tsconfig.json里配置include数组,把这个路径加进去:
{ "compilerOptions": { // 其他配置 }, "include": [ "src/**/*", "src/types/async/**/*" ] }
或者在需要用到的文件顶部添加引用注释:
/// <reference path="../types/async/index.d.ts" />
这种方式不需要依赖任何远程仓库,适合快速验证PR的类型定义是否符合需求。
内容的提问来源于stack exchange,提问作者A T
相关产品推荐
相关产品推荐

