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

如何为typescript-library-starter模板添加自定义类型定义?

解决typescript-library-starter中自定义类型未被编译到dist的问题

以下是几种可行的解决方法,按推荐优先级排序:

方法1:将自定义类型放到src目录内并直接导出

这是最符合模板默认配置的方式,无需额外修改编译配置:

  • 在src目录下新建types/index.ts文件,声明并导出你的自定义类型:
    export interface Dog {
      name: string;
      breed: string;
    }
    
  • 在库的入口文件(比如src/index.ts)中重新导出该类型:
    // 导出你的库功能
    export const sayHello = (name: string) => `Hello ${name}!`;
    // 导出自定义类型
    export { Dog } from './types';
    
  • 执行编译后,Dog类型会自动被包含到dist/index.d.ts中,消费者可以直接通过import { Dog } from 'hwrld'使用。

方法2:调整tsconfig.json包含typings目录

如果坚持要把类型文件放在src外的typings目录,需要修改编译配置让tsc处理这些文件:

  1. 修改tsconfig.json的include字段,添加typings/**/*:
    {
      "include": [
        "src/**/*",
        "typings/**/*"
      ]
    }
    
  2. 在typings/index.d.ts中确保类型是模块级导出:
    export interface Dog {
      name: string;
      breed: string;
    }
    
  3. 在src入口文件中导出该类型:
    export { Dog } from '../typings';
    

这样编译时tsc会将typings里的类型合并到dist的类型文件中。

方法3:检查package.json的types字段配置

确保你的package.json中正确指定了类型文件的入口:

{
  "types": "dist/index.d.ts"
}

这个字段告诉TypeScript消费者你的库的类型定义文件位置,必须指向编译后生成的正确路径。

为什么之前的方法无效?

  • 你放在src外的typings目录默认不在tsc的编译范围内,所以不会被处理;
  • 即使typings目录被编译,若没有在库的入口文件中导出该类型,它也不会被合并到最终的dist/index.d.ts里,消费者自然无法识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:30:03