
从 Vue2 + JavaScript 迁移到 Vue3 + TypeScript 时,开发者常常面临模块导入/导出方面的挑战,尤其是在处理大量 export * as 语句时。JavaScript 中常用的 export * as 导出方式在 TypeScript 中并不直接受支持,但这并不意味着我们无法实现类似的功能。
JavaScript 代码示例:
// api.js
import request from '@/utils/request';
export function apia(data) {
return request({ ... });
}
export function apib(params) {
return request({ ... });
}
// 使用
export * as api from './api.js';
api.apia();
在 TypeScript 中,我们可以利用默认导出机制来达到相同的效果:
// api.ts
import request from '@/utils/request';
export function apia(data: any): any {
return request({ ... });
}
export function apib(params: any): any {
return request({ ... });
}
export default {
apia,
apib,
};
然后,在其他模块中导入并使用:
// 使用 import Api from './api.ts'; Api.apia();
通过这种默认导出方式,我们可以将多个函数组合成一个对象进行导出,在使用时,只需导入该对象,然后通过点语法访问其中的函数,从而在 TypeScript 中模拟了 export * as 的便捷性,简化了代码迁移和维护工作。 需要注意的是,根据实际情况,需要为函数参数和返回值添加合适的 TypeScript 类型注解。










