You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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更方便:

  1. 先克隆你自己fork的DefinitelyTyped仓库,切换到PR对应的patch-4分支:
    git clone https://github.com/MyUserName/DefinitelyTyped.git
    cd DefinitelyTyped/types/async
    git checkout patch-4
    
  2. 在types/async目录下执行npm link,把这个类型包注册到全局npm链接:
    npm link
    
  3. 回到你的项目目录,执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:21:13