tengo enum :
enum A { a = 'a', b = 'b', }Y un tipo:
type B<T = A> = { values: Record<T, string>; // error Type 'T' does not satisfy // the constraint 'string | number | symbol'. // Type 'T' is not assignable to type 'symbol'. } Entonces quiero usarlo const someVar: B<someEnum>; .
Pregunta: ¿puedo pasar de alguna manera una enum como genérico a un type ?
Sí, si estás de acuerdo con algo como esto:
type B<T extends A = A> = { values: Record<T, string>; }Sin embargo, no podrá generalizar la enumeración. Citando los documentos :
Además de interfaces genéricas, también podemos crear clases genéricas. Tenga en cuenta que no es posible crear enumeraciones y espacios de nombres genéricos.
Si desea utilizar las claves Enum de A , debe extraerlas del propio tipo.
Aquí hay una muestra de cómo puede lograrlo:
enum A { a = 'a', b = 'b', } type B<T extends string = keyof typeof A> = { values: Record<T, string>; } const object1 : B = { values: { "a": "123", "b": "123" } }