Hola chicos, tengo una condición y funciona, pero necesito reconstruirla para enumerar y la enumeración no funciona con mi condición anterior. líder de equipo pd dijo
const basketAccepts = { 0: ['Values'], 1: ['Rows', 'Columns'] } const basketAcceptValues = isOver && visualType === 'matrix' && !basketAccepts[Number(!dragItem.Measure)].includes(basketName)Cuando muevo algún div, algunas cosas CSS están sucediendo
Así que necesito reconstruirlo para el mismo caso pero para enum .
enum basketAccepts { 'Values' = 0, 'Rows' = 1, 'Columns' = 1,}
Utilicé el operador ternario para decidir el valor de cada propiedad de enumeración como si estuviera incluida o no en el índice cero de basketAccepts siendo uno o cero respectivamente. Entonces, esta lógica asume que todas esas 3 condiciones aparecerán en el otro conjunto [1] si no están contenidas en el primero.
De hecho, no pude verificarlo porque no estoy acostumbrado a TypeScript. Por favor, hágamelo saber si funcionó.
const basketAccepts = { 0: ['Values'], 1: ['Rows', 'Columns'] }; enum basketAccepts { //use value 0 if 'Values' appears in basketAccepts[0] otherwise 1 'Values' = basketAccepts[0].includes('Values') ? 0 : 1, //use value 0 if 'Rows' appears in basketAccepts[0] otherwise 1 'Rows' = basketAccepts[0].includes('Rows') ? 0 : 1, //use value 0 if 'Columns' appears in basketAccepts[0] otherwise 1 'Columns' = basketAccepts[0].includes('Columns') ? 0 : 1 } console.log(basketAccepts);No estoy seguro de por qué después de usar enumeraciones, las enumeraciones en TS no son estándar y se implementaron antes de que Dev decidiera seguir estrictamente las propuestas de ES, por lo que personalmente las evitaría.
Pero si aún debe usarlos, esto podría ayudar.
Si observa en qué convierte TS su enumeración ->
{ "0": "Values", "1": "Columns", "Values": 0, "Rows": 1, "Columns": 1 } Lo que podríamos hacer entonces es usar Object.entries y Array.some .
p.ej..
enum basketAccepts { 'Values' = 0, 'Rows' = 1, 'Columns' = 1, } const basketName = 'Rows'; const measure = true; console.log( Object.entries(basketAccepts). some(([k,v ]) => k == basketName && Boolean(v) == measure) );Gracias chicos por la ayuda, de todos modos lo rehice de otra manera. Espero que ayude a alguien.
export enum FieldType { Dimension, Measure } const fieldCompatibilities = { [FieldType.Dimension]: ['Columns', 'Rows'], [FieldType.Measure]: ['Values'] } const basketAcceptValues = isOver && visualType === 'matrix' && !fieldCompatibilities[Number(dragItem.Measure)].includes(basketName)