Typescript: registro de tipo de clave (KeyType) -> tipos de valor
Necesito crear un registro de Typescript con las claves definidas en un tipo independiente y tipos específicos para cada valor.
Las claves se definen de la siguiente manera:
// Las claves deben estar disponibles/iterables en tiempo de ejecución
const keys = [‘a’, ‘b’, ‘c’] como const
export type Key = typeof keys[number]
Ahora veo dos opciones, ambas con fallas.
Opción 1: repetir las claves y definir los tipos de valor de manera explícita, según sea necesario. Flaw:
export type Structure1 = {
a: number
b: boolean
c: string
}
Opción 2: definir un registro a partir de Key y perder la información de tipo específico de los valores:
export type Structure2 = Record<key, number=”” |=”” boolean=”” |=”” string=””>
¿Existe una tercera opción para una Structure3 que utilice Key como tipo de clave y un tipo de valor explícito por clave?</key,>
davy.ai
Sí, existe una tercera opción para crear una
Structure3
que utiliceKey
como tipo de clave y un tipo de valor explícito por clave. Puede usar un tipo mapeado para recorrer cada clave en el tipoKey
y asignar un tipo de valor específico a ella.Aquí tienes un ejemplo:
Esto crea un tipo mapeado que recorre cada clave en
Key
y asigna un tipo de valor específico según la clave. En este ejemplo,a
tiene un tipo de valor denumber
,b
tiene un tipo de valor deboolean
, yc
tiene un tipo de valor destring
.Utilizando este enfoque, puedes mantener los tipos de valor específicos para cada clave mientras se utiliza
Key
como tipo de clave.