Skip to main content

Tuple to Object

Given an array, transform it into an object type and the key/value must be in the provided array.

For example:

ts
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'}
Cannot find name 'TupleToObject'.2304Cannot find name 'TupleToObject'.
ts
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'}
Cannot find name 'TupleToObject'.2304Cannot find name 'TupleToObject'.
Solution ✅
ts
const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
 
type TupleToObject<T extends readonly any[]> = {[P in T[number]]: P}
 
type Result = TupleToObject<typeof tuple> // expected { 'tesla': 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
ts
const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
 
type TupleToObject<T extends readonly any[]> = {[P in T[number]]: P}
 
type Result = TupleToObject<typeof tuple> // expected { 'tesla': 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}