Given an array, transform to an object type and the key/value must in the given array.
const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
// expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
const result: TupleToObject<typeof tuple>
// 0. 시작
type TupleObject<T extends readonly any[]> = ...
// 1. 리턴값은 {}
type TupleObject<T extends readonly any[]> = {}
// 2. 키 - 밸류 값
type TupleObject<T extends readonly any[]> = {[]: ...}
// 3. 반복 조건
type TupleObject<T extends readonly any[]> = { [ xxx in T[number]]: ...};
// 4. 마무리
type TupleObject<T extends readonly any[]> = { [P in T[number]]: P }