如何在Node.js中导入TypeScript Interface并解决类型引用报错问题
问题解决说明
报错原因
- TypeScript 中的
interface属于编译期类型定义,编译为可执行的JavaScript代码时会被完全擦除,不存在对应的运行时实体。 - 你使用
const Config = require("../interfaces/Types")是CommonJS规范的运行时导入语法,赋值得到的Config是模块导出的运行时对象(由于你仅导出了interface,运行时该对象实际为空),自然无法作为类型标注使用。 - 同文件内定义interface不报错,是因为TypeScript在编译阶段可以直接识别同文件作用域下的类型定义,不需要跨文件导入。
修复方案
即使是Node.js CommonJS运行环境,也无需改动项目的模块配置,只需调整类型导入的写法即可:
方案1(推荐,TS 3.8+版本支持)
使用TypeScript专属的类型导入语法,该语句编译后会被完全删除,不会生成任何运行时代码,完全兼容CommonJS环境:
// config.ts import type { Config } from "../interfaces/Types"; const config: Config = { current: 'base' };
如果Types.ts中同时导出了运行时可用的值,再加一行普通的require语句导入运行时内容即可。
方案2(兼容低版本TS)
如果你的TypeScript版本低于3.8不支持import type,可以使用如下写法:
// config.ts const TypesModule = require("../interfaces/Types"); const config: typeof TypesModule.Config = { current: 'base' };
内容的提问来源于stack exchange,提问作者pythonNovice
相关产品推荐
相关产品推荐

