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

Typescript如何从模块导出对象的值中推导联合类型

TypeScript 获取模块所有导出值类型联合的方案

直接通过索引访问类型即可实现需求,无需手动枚举导出项:

实现代码

在你的导入文件中按如下方式定义类型即可:

import * as things from './myModule';

// 所有导出值的联合类型
type AnyThing = typeof things[keyof typeof things];

function useThings(thing: AnyThing) {
    // 业务逻辑正常使用即可
}

原理解释

  • typeof things 会拿到整个导入模块的类型结构,所有导出项都会作为该对象类型的属性存在
  • keyof typeof things 是所有导出项的键名组成的联合类型
  • TypeScript 索引访问语法 T[K] 当 K 为联合类型时,会自动返回所有对应属性值的类型的联合,刚好满足你要的所有导出值类型拼接的效果

如果你需要单独用到键的联合类型,也可以拆分定义:

type AnyThingKey = keyof typeof things;
type AnyThing = typeof things[AnyThingKey];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:27:01