TypeScript 挑战(三)- 实现元组转换为对象

实现元组转换为对象,学习记录

题目简介


给定数组,转换为对象类型,键/值必须在给定数组中。

例如

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

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

测试用例


1
2
3
4
5
6
7
import { Equal, Expect } from '@type-challenges/utils'

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

type cases = [
Expect<Equal<TupleToObject<typeof tuple>, { tesla: 'tesla'; 'model 3': 'model 3'; 'model X': 'model X'; 'model Y': 'model Y'}>>,
]

答案


1
2
3
type TupleToObject<T extends readonly any[]> = {
[k in T[number]]: k
}

看完这个答案我是蒙蔽状态