typescript - 从索引对象值中获取联合类型
问题描述
假设我有一个索引类型:
type X = {
a: 'A',
b: 'B'
}
是否有可能从中获得(派生):
type V = 'A' | 'B'
不使用显式方法,例如:
type V = X['a'] | X['b']
我想要的是keyof
(用于获取键联合类型),但用于值。
解决方案
您可以使用具有以下结果的类型查询keyof
:
type V = X[keyof X]
通常,类型查询将返回所有可能字段类型的联合,因此X['a'] | X['b']
与X['a' | 'b']
. 这就是为什么X[keyof X]
有效,因为keyof
将返回代表对象中所有键的字符串文字类型的联合。
推荐阅读
- button - 如何在 SwiftUI 中创建图像按钮
- unix - 如何从 grep -A 输出中标记第二行
- bash - 提取两个模式之间的行并使用 if 条件删除行之间的行
- javascript - 使用 element-UI 和 Vue.js 保存上传的文件
- spring-batch - 调试 SpringBatch 应用程序
- c# - 迁移未运行并引发 __EFMigrationsHistory 错误
- javascript - 无法在 Angular 中为超链接创建自定义点击指令
- flutter - Dart 基于所有注释生成 1 个文件
- javascript - 避免直接改变道具
- sql-server - SSDT 生成单独的脚本