面试题答案
一键面试实现思路
- 配置TypeScript:确保
tsconfig.json
文件配置正确,支持ES6模块和CommonJS模块的混合使用。例如,设置"module": "commonjs"
,"esModuleInterop": true
,"allowSyntheticDefaultImports": true
。 - 导入ES6模块数据:在TypeScript文件中使用
import
语句导入ES6模块数据。 - 数据处理:在导入数据后,对数据进行所需的处理。
- 导出给CommonJS模块:使用
export =
语法导出处理后的数据,以兼容CommonJS模块。 - 避免循环引用:合理组织代码结构,确保模块之间的依赖关系不会形成循环。例如,避免A模块导入B模块,B模块又导入A模块这种情况。如果存在潜在循环依赖,可以考虑提取公共部分到一个独立模块,让A和B模块共同依赖这个新模块。
关键代码示例
假设我们有一个ES6模块es6Module.js
:
// es6Module.js
export const data = [1, 2, 3, 4, 5];
TypeScript文件tsFile.ts
:
// tsFile.ts
import { data } from './es6Module.js';
// 数据处理
const processedData = data.map((num) => num * 2);
// 导出给CommonJS模块
export = processedData;
在tsconfig.json
中配置:
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"target": "es6",
"outDir": "./dist",
"rootDir": "./src",
"strict": true
}
}
这样就实现了从ES6模块导入数据,处理后导出给CommonJS模块使用,同时通过合理配置和代码结构避免循环引用问题。