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

TypeScript默认导出接口问题:模块导入报错及二次导出需求

TypeScript类型导出与导入问题解决方案

1. 调整types.d.ts的导出方式

如果要默认导出单个接口,直接在接口声明前添加export default:

export default interface Messenger {
  send: (msg: string) => void;
  receive: () => string;
}

如果要默认导出多个类型,可将所有类型整合后统一导出:

// 先定义所有需要导出的类型
interface Messenger {
  send: (msg: string) => void;
  receive: () => string;
}

interface Message {
  content: string;
  timestamp: number;
}

// 打包为一个类型集合后默认导出
type AllTypes = {
  Messenger: Messenger;
  Message: Message;
};

export default AllTypes;

2. 在index.ts中完成二次导出

直接导入types.d.ts的默认导出内容,再重新导出即可:

// 导入types模块的默认导出内容
import Types from './types';

// 二次默认导出
export default Types;

// 也可按需重命名导出(可选)
export { default as AppTypes } from './types';

3. 解决"Cannot find module './types'"错误

  • 检查文件路径:确认index.ts与types.d.ts在同一目录下,路径./types拼写正确,注意系统是否区分文件名大小写。
  • 配置tsconfig.json:确保include字段包含当前目录的文件,同时设置正确的模块解析方式:
    {
      "compilerOptions": {
        "moduleResolution": "node"
      },
      "include": ["src/**/*"] // 若文件在src目录下,根目录文件则改为["*"]
    }
    
  • 确保types.d.ts被识别为模块:只要文件中存在export语句,TypeScript就会将其标记为模块文件(而非全局类型文件),这是成功导入的必要条件。

验证导入效果

在其他业务文件中导入使用:

// 从index.ts导入二次导出的类型
import AppTypes from './index';

const messenger: AppTypes.Messenger = {
  send: (msg) => console.log(`发送消息:${msg}`),
  receive: () => '收到回复'
};

// 或直接从types.d.ts导入默认导出的类型
import Messenger from './types';

const messenger2: Messenger = {
  send: (msg) => console.log(msg),
  receive: () => 'Hello'
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:11:07