A continuación se muestra mi enumeración:
export enum MyEnum { Enum1 = 'Enum 1', Enum2 = 'Enum 2', Enum3 = 'Enum 3', Enum4 = 'Enum 4', Enum5 = 'Enum 5', }Quiero crear un tipo para el objeto de ejemplo que se muestra a continuación:
const testData = { test1: { Enum1: 'Enum 1', Enum2: 'Enum 2', }, test2: { Enum1: 'Enum 1', Enum2: 'Enum 2', Enum3: 'Enum 3', Enum4: 'Enum 4', }, test2: { Enum1: 'Enum 1', Enum2: 'Enum 2', Enum4: 'Enum 4', }, };Hasta ahora, podría llegar a:
type FilteredBuyableMethods = { [key: string]: Partial<{ [key in MyEnum]: string }> }; ¿Cómo puedo reemplazar la string en [key in MyEnum]: string con el valor exacto de la clave?
Entonces, si la clave es Enum1 , el valor solo debe ser 'Enum 1' y así sucesivamente.
Además, el valor (objeto con clave de enumeración y valor) adjunto a las claves (por ejemplo, test1 , test2 ) disponibles en testData deben ser los de enumeración MyEnum . No necesariamente todos los valores de la enumeración MyEnum deben estar presentes (parciales), pero uno no debería poder agregar ningún par clave-valor aleatorio aparte de los pares clave-valor de la enumeración. Gracias de antemano.
Usando los trucos de Use Enum como tipo de clave restringida en Typescript y Typescript: tipo de unión literal de cadena de enum , puede construir un tipo asignado de la siguiente manera:
type FilteredBuyableMethods = { [key: string]: Partial<{ [key in keyof typeof MyEnum]: `${typeof MyEnum[key]}` }> }; Observe typeof MyEnum[key] analiza como (typeof MyEnum)[key] .
( parque infantil en línea )
Esto evitará claves incorrectas (que no son claves de la enumeración), así como valores incorrectos (que no se ajustan a su clave respectivamente).