Saltar al contenido

Cómo obtener una enumeración key por valor en Typescript?

Hola usuario de nuestro sitio web, descubrimos la solución a tu búsqueda, has scroll y la obtendrás aquí.

Solución:

Sí, tienes el error correcto. Si quieres conseguir tu enum key por value en ese caso, debe volver a escribir su enumeración de esta manera para .ts:

export enum Colors 
  RED = "RED COLOR",
  BLUE = "BLUE COLOR",
  GREEN = "GREEN COLOR"

Entonces puedes obtener de esta manera:

let enumKey = Colors["BLUE COLOR"];
    console.log(enumKey);

ingrese la descripción de la imagen aquí

Otra forma es hacer un bucle, lo que sería poco costoso y el código sería ruidoso, lo que no prefiero.

Update: Para .tsx debería ser así.

 export enum Colors 
    RED = "RED COLOR" as any,
    BLUE = "BLUE COLOR" as any,
    GREEN = "GREEN COLOR" as any

También debería funcionar como arriba.

estoy usando esta funcion

export function getEnumKeyByEnumValue(myEnum: any, enumValue: number | string): string 
  let keys = Object.keys(myEnum).filter((x) => myEnum[x] == enumValue);
  return keys.length > 0 ? keys[0] : '';

Pruebas con broma

describe('enum', () => 
  enum TestEnumWithNumber 
    ZERO
  

  enum TestEnumWithString 
    ZERO = 'ZERO'
  

  it('should return correct key when enum has number values', function() 
    const key = getEnumKeyByEnumValue(TestEnumWithNumber, TestEnumWithNumber.ZERO);
    expect(key).toBe('ZERO');
  );

  it('should return correct key when enum has string values', function() 
    const key = getEnumKeyByEnumValue(TestEnumWithString, TestEnumWithString.ZERO);
    expect(key).toBe('ZERO');
  );

  it('should return correct key by passing corresponding string value', function() 
    const key = getEnumKeyByEnumValue(TestEnumWithString, 'ZERO');
    expect(key).toBe('ZERO');
  );
);

Espero que ayude a alguien

const findMe = Object.keys(Colors)[Object.values(Colors).indexOf("BLUE COLOR")];

https://jsfiddle.net/anniebbird/agy3unfk/3/

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *