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

如何从TypeScript联合类型中提取所有成员的type字段值类型

从联合类型中提取所有成员的type字段值类型

直接利用TypeScript的索引访问类型特性即可实现需求,无需复杂的元类型技巧:

// 原类型定义
interface MysqlConnectionOptions {
    readonly type: "mysql" | "mariadb";
}

interface PostgresConnectionOptions {
    readonly type: "postgres";
}

export type DataSourceOptions = MysqlConnectionOptions | PostgresConnectionOptions;

// 提取所有type字段值的联合类型
type DataSourceType = DataSourceOptions['type'];
// 最终 DataSourceType 等价于 "mysql" | "mariadb" | "postgres"

原理说明

当对联合类型进行索引访问时,TypeScript会自动触发分布式类型行为:遍历联合中的每个成员类型,提取对应字段的类型,最后将所有结果合并为一个新的联合类型。

这种方式的优势在于:后续如果给DataSourceOptions添加新的连接配置类型(比如SqliteConnectionOptions),只要新类型包含type字段,DataSourceType会自动同步包含新的type值,无需手动维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:57:33