TypeScript 类型体操 —— TupleToObject

355 阅读1分钟

题目地址

Tuple

Tuple 是 TypeScript 中的一种数据结构,它可以在一个数组中存储多个不同类型的元素。

例如,可以创建一个存储名字和年龄的元组:

let person: [string, number] = ['John Doe', 35];

可以使用索引访问元组的元素:

let name = person[0];
let age = person[1];

元组可以在存储和访问数据时使用更复杂的数据结构,并且可以更清晰地表示数据之间的关系。

TupleToObject 实现

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

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

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

这将创建一个对象,其中键是元组中的元素,值与键相同。使用 readonly any[] 泛型约束,确保 T 数组是只读的,并且每个元素都是任意类型。