ts 如何支持 js 中的 export * as ?

vue2 + js 迁移到 vue3 + ts 中
之前大量接口使用 export * as 的方式引用使用

// 接口 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()

但是ts这种写法好像不管用了,应该如何在ts中支持这种导入方式

阅读 652
avatarAI BotBETA

在 TypeScript 中,与 JavaScript 类似,你可以使用 export * as 语法来重新导出模块中所有导出的内容。然而,如果你的 TypeScript 配置或项目结构存在问题,可能会遇到一些不兼容或错误的情况。以下是如何在 TypeScript 中使用 export * as 的步骤和注意事项:

  1. 确保文件扩展名正确
    确保你的 TypeScript 文件使用 .ts.tsx 扩展名,而不是 .js。虽然 TypeScript 支持在 .js 文件中使用类型注解等特性(通过 "allowJs": true 配置),但直接使用 export * as.js 文件中并不会有 TypeScript 的支持。
  2. 配置 TypeScript
    确保你的 tsconfig.json 配置正确,特别是 moduleResolutionallowSyntheticDefaultImports(如果你使用默认导入和导出的话)等选项。
  3. 在 TypeScript 文件中使用
    在你的 TypeScript 文件中,你可以直接使用 export * as 语法来重新导出模块。例如:

    // api.ts
    import request from '@/utils/request'
    export function apiA(data) {
      return request({
        // ...
      });
    }
    export function apiB(params) {
      return request({
        // ...
      });
    }
    
    // 使用
    // 在另一个 TypeScript 文件中
    export * as Api from './api';
    Api.apiA();
  4. 检查模块解析
    确保 TypeScript 能够正确解析你的模块路径。如果使用了别名(如 @/utils/request),确保在 tsconfig.jsonpaths 配置中已正确设置。
  5. 类型检查
    当使用 export * as 时,TypeScript 会尝试保留所有原始导出的类型信息。如果你在使用过程中遇到类型错误,请检查你的类型定义是否正确,或者是否有类型冲突。
  6. 编译和运行
    确保 TypeScript 编译器(tsc)或你的构建工具(如 Webpack、Vite 等)已正确配置,以编译 TypeScript 文件并生成可运行的 JavaScript 代码。

如果你已经按照上述步骤操作,但仍然遇到问题,请检查具体的错误信息,并查看是否有其他配置或代码问题导致 TypeScript 无法正确解析或编译。在 Vue 3 + TypeScript 的项目中,确保 Vue 和相关依赖项(如 Vue Router、Vuex 等)都是与 TypeScript 兼容的版本。

1 个回答

可以用默认导出,js 中没有 * 全部多出的语法:

import request from '@/utils/request'
export function apiA(data) {
  return request({
    ...
  })
}
export function apiB(params) {
  return request({
    ...
  })
}
// 这里 默认导出
export default {
   apiA,
   apiB
}

使用:

// Api 也可以是其他变量
import Api from './api.js'

Api.apiA()

如果回答有帮助,望采纳!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏