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

Next.js项目中如何通过@types目录导入TypeScript声明文件?

解决TS6137:无法导入类型声明文件的问题

问题核心

TS6137错误是因为你尝试直接导入一个未被标记为模块的.d.ts文件——TypeScript会将无模块导出的.d.ts视为全局类型定义,不允许通过模块路径导入。

解决方案

1. 调整类型文件结构(二选一)

方案A:改用.ts文件存储类型(推荐)

将types/ApiResponse.d.ts重命名为types/ApiResponse.ts,直接在文件中导出类型:

export interface ApiResponse {
  // 替换为你的实际类型定义
  data: Record<string, unknown>;
  statusCode: number;
}

方案B:将.d.ts转为模块文件

若需保留.d.ts后缀,在文件顶部添加模块标识,让TypeScript将其识别为模块:

export {}; // 必须添加这行,标记文件为模块

export interface ApiResponse {
  data: Record<string, unknown>;
  statusCode: number;
}

2. 修正tsconfig.json配置

确保配置中包含以下内容,让别名@types/*指向你的types目录:

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@types/*": ["types/*"]
    },
    // 保留其他原有配置
  }
}

注意:typeRoots用于全局类型的自动加载,和模块类型的导入无关,无需依赖它解决此问题。

3. 正常导入类型

现在可以按你想要的方式导入类型:

import { ApiResponse } from "@types/ApiResponse";

这样就能彻底解决TS6137错误,实现别名导入类型的需求。

内容的提问来源于stack exchange,提问作者clint21.eth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:40:52