Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

485
Visualizações
Cómo obtener el valor mínimo/máximo de Enum en TypeScript

Tengo una enumeración constante en TypeScript, algo como a continuación:

 const enum ControlId { ZoomIn = 600, ZoomOut, Close, Open, .... }

Dado un número, quiero saber si está dentro del rango de ControlId, que es [600, ?], para poder saber si entra en la categoría de ControlId o no. Me pregunto si hay una manera de hacer eso. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que está diciendo que tiene un valor de tiempo de ejecución y desea saber si es un miembro válido de ControlId (ha dicho que desea una "verificación de rango", pero las enumeraciones numéricas no son necesariamente contiguas).

Una const enum no existe en tiempo de ejecución, por lo que no puede escribir código de tiempo de ejecución para validar un número y ver si es un miembro válido de una const enum .

Puedes hacerlo si la enum no es const :

 enum ControlId { ZoomIn = 600, ZoomOut, Close, Open, // .... } function assertIsControlId(value: number): asserts value is ControlId { if (!(value in ControlId)) { throw new Error(`Invalid ControlId value ${value}`); } }

Allí lo he hecho como una función de aserción de tipos, pero en su lugar podría ser una función de protección de tipos, o simplemente una expresión en línea. Básicamente, si el valor es un número y el valor (cuando se convierte en cadena, implícitamente por el operador in ) es un nombre de propiedad válido para ControlId , es un miembro válido de ControlId .

Si realmente quiere decir que desea el mínimo / máximo, aunque no se garantiza que los valores de enumeración sean contiguos, puede hacerlo así:

 function getMinMaxOfEnum(e: object) { const values = Object.keys(e).map(k => k === "" ? NaN : +k).filter(k => !isNaN(k)).sort((k1, k2) => k1 - k2); return [values[0], values[values.length - 1]]; }

(Probablemente haya un mejor tipo para e que object . Y en entornos modernos, values[values.length - 1] podría ser values.at(-1) .

Eso obtiene todas las claves del objeto que pasa, las convierte en números si es posible, elimina las que no se convirtieron correctamente (por lo que ahora tenemos una matriz de valores de enumeración), ordena la matriz resultante y devuelve la primera y últimos elementos de la matriz.

Alternativamente, use Math.min y Math.max en lugar de ordenar:

 function getMinMaxOfEnum(e: object) { const values = Object.keys(e).map(k => k === "" ? NaN : +k).filter(k => !isNaN(k)); return [Math.min(...values), Math.max(...values)]; }

Enlace del patio de recreo

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda