Skip to main content

11 - 元组转换为对象

Answer TestCases

将一个元组类型转换为对象类型,这个对象类型的键/值和元组中的元素对应。

例如:

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'}

Solution

type TupleToObject<T extends readonly PropertyKey[]> = {
[P in T[number]]: P
}

PropertyKey 是内置类型

declare type PropertyKey = string | number | symbol

定义对象的 key 只能是这三种类型之一

T[number] 返回数组元素构成的联合类型, 如数组 ['name', 'age', 'sex'] , 则 T[number]'name' | 'age' | 'sex'

之后通过映射类型 [P in T[number]]: P 遍历数组构造对象类型