首页 > 解决方案 > 从索引对象值中获取联合类型

问题描述

假设我有一个索引类型:

type X = {
 a: 'A',
 b: 'B'
}

是否有可能从中获得(派生):

type V = 'A' | 'B'

不使用显式方法,例如:

type V = X['a'] | X['b']

我想要的是keyof(用于获取键联合类型),但用于值。

标签: typescript

解决方案


您可以使用具有以下结果的类型查询keyof

type V = X[keyof X]

通常,类型查询将返回所有可能字段类型的联合,因此X['a'] | X['b']X['a' | 'b']. 这就是为什么X[keyof X]有效,因为keyof将返回代表对象中所有键的字符串文字类型的联合。


推荐阅读