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

如何为发布至npm的JavaScript库导出JSDoc类型

可行,无需生成d.ts文件就能通过JSDoc让TypeScript识别JS模块类型

解决步骤:

  1. 配置my-module的package.json
    在my-module的package.json中添加types字段,指定你的JS入口文件——这是让TypeScript直接读取JS文件内JSDoc的核心配置:

    {
      "name": "my-module",
      "main": "index.js",
      "types": "index.js" // 核心配置:告诉TS从该JS文件读取类型声明
    }
    
  2. 完善JSDoc标注(按需)
    你现有JSDoc已满足函数类型的基本识别需求,如果需要让User类型也能被外部直接导入使用,可给@typedef添加@export标签:

    // my-module/index.js
    /**
     * @typedef {Object} User
     * @property {string} name
     * @property {string} surname
     * @property {number} age
     * @export User // 允许外部导入该类型
     */
    /**
     * 创建用户实例
     * @param {string} name
     * @param {string} surname
     * @param {number} age
     * @returns {User}
     */
    const NewUser = (name, surname, age) => {
      return { name, surname, age };
    };
    export default NewUser;
    
  3. 检查消费项目的tsconfig配置
    在导入my-module的项目(即app.js所在项目)的tsconfig.json中,确保开启以下必要选项:

    {
      "compilerOptions": {
        "moduleResolution": "Node",
        "esModuleInterop": true,
        "allowJs": true, // 允许TypeScript处理JS文件
        "checkJs": true // 启用JS文件的类型检查(可选,建议开启以获得完整类型提示)
      }
    }
    

完成以上配置后,TypeScript就能直接解析my-module中的JSDoc类型,不会再抛出7016错误,全程无需额外生成d.ts文件或增加编译步骤。


内容的提问来源于stack exchange,提问作者Battal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:11:20