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

TypeScript能否将文件中所有类型导入为联合类型?

将多个导出类型合并为联合类型的方法

你当前的写法报错是因为 import * as Types 导入的是一个命名空间对象,而非类型集合,TypeScript 不允许直接把命名空间当作类型使用。

下面提供两种可行的解决方案:

方案一:在类型文件中提前定义联合类型

直接在 types.ts 里把所有类型合并成一个联合类型导出,后续文件直接导入这个联合类型即可:

// types.ts
export type Type1 = string;
export type Type2 = number;
export type Type3 = boolean;
// 预定义所有类型的联合类型
export type AllTypes = Type1 | Type2 | Type3;
// other.ts
import { AllTypes } from "./types";
const t: AllTypes = 1; // 正常运行

方案二:在导入文件中动态生成联合类型

如果不想修改原类型文件,可以在导入时通过 TypeScript 的类型操作符动态生成联合类型:

// types.ts 保持原内容不变
export type Type1 = string;
export type Type2 = number;
export type Type3 = boolean;
// other.ts
import * as Types from "./types";
// 提取所有导出类型的联合类型
type AllTypes = Types[keyof typeof Types];
const t: AllTypes = 1; // 正常运行

原理说明:

  • typeof Types 获取命名空间 Types 的类型结构
  • keyof typeof Types 得到所有导出类型的名称联合:"Type1" | "Type2" | "Type3"
  • Types[keyof typeof Types] 遍历所有类型名称,取出对应的类型并合并为联合类型

两种方案的选择:

  • 若多个文件都需要用到这个联合类型,优先选方案一,便于统一维护
  • 若只是单个文件临时需要合并,方案二更灵活

内容的提问来源于stack exchange,提问作者jayatubi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:22:37