Skip to main content

Tuple to Object

传入一个元组类型,将这个元组类型转换为对象类型,这个对象类型的键/值都是从元组中遍历出来。

// 假如你有一下这两个对象,你怎样支持他们的类型 其实就是 元祖 转 对象

const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const

type result = TupleToObject<typeof tuple> // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}

/**
* 思路:
* 1 传入一个参数 这个参数是个元祖,并且只读,元祖的集合可以是任意类型所以要 keyof 设置成 any,映射的集合内元素可以是任意类型
* 2. key: K 是 key值,这个值是元祖的元素 T的 key值是属性名 以 tuple 为例 键名就是 tuple 集合里面的每个元素
* 3. value:值就是键名
*/

type TupleToObject<T extends ReadonlyArray<keyof any>> = {
[K in T[number]]: K;
};