typescript - 如何将字符串数组 const 映射到联合类型
问题描述
我有一个字符串数组,我想从中定义一个新类型,其中属性实际上是数组中的元素。有不同种类的数组,我有一个函数可以根据输入数组返回不同的类型。
const RGBColor = ["R" , "G" , "B"] as const
const YRBColor = ["Y" , "R" , "B"] as const
function Map<TInputColor extends readonly string[]>(x: TInputColor): TOutputColor<TInputColor>;
如果输入为 RGBColor,则输出类型为
{
R: number;
G: number;
B: number;
}
如果输入为 YRBColor,则输出类型为
{
Y: number;
R: number;
B: number;
}
那么,我应该如何定义 TOutputColor?
TOutputColor<TInputColor>
{
???????
}
解决方案
使用映射类型:
type TOutputColor<TInputColor extends readonly string[]> = {
[K in TInputColor[number]]: number;
};
推荐阅读
- perl - Perl 系统命令返回“mkdir /tmp/test.xxxxx: No such file or directory”
- angular - 以角点按到顶部
- jenkins - GitHub 分支源 jenkins 插件 - 可以跳过/忽略一些拉取请求
- r - 使用flowcut后如何生成fcs
- postgresql - 设置用户名唯一的 id
- database - 有声数据库结构
- c# - 给定 C# 中的课程时间范围集合,如何获取当前课程?
- wpf - 使用自动生成的列在 WPF DataGrid 上显示图像
- java - 匹配精确字段中的匹配查询与术语查询
- javascript - 如何根据组合在一起的相似值在 JavaScript 中组织单个数组?