Tuple 类型
Tuple Type(中文翻译:元组类型),可以认为是一个有顺序的数组类型。有以下特点:
- 可以明确知道包含了多少元素(这里的元素是类型)
- 可以明确知道每个类型所在的位置
- 长度固定,元组类型的变量需要为每一个位置定义对应类型的值
举例说明
type TuleDemo = [string, number];
上述类型 TuleDemo 定义了一个元组类型,包含了string
和 number
两种类型元素,元组长度为 2,其中第一个元素类型是 string
, 第二个元素类型是 number
。
练习:
将一个元组类型转换为对象类型,这个对象类型的键/值和元组中的元素对应。
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'}
解法:
type TupleToObject<T extends readonly any[]> = {
[K in T[number]]: K
}
// T = ['string', 'string', 'string', 'string']
// T[number] = tuple
// K = 循环 T[number] = 循环 tuple
// readonly 对应 as const
// T 是一个 any 类型的数据, 所以这边的 T[number] 应该是代表 取数组的中值 作为 key, number 是数组下标