es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar los valores del arreglo que no estén en un tipo de unión literal.

Por ejemplo, tengo un tipo de unión de cadena literal:

type AllowedColor = 'red' | 'blue';

Y estoy recibiendo el color del servidor.

let colors = getColorsFromServer();

Quiero filtrar el array para que solo consista en el tipo AllowedColor. Este es un pseudo código que no funciona:

colors.filter(color => color is AllowedColor);

¿Existe alguna manera de hacer esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar una función de guardia de tipo para filtrar el array basado en el tipo AllowedColor. Aquí tienes un ejemplo:

    function isAllowedColor(color: string): color is AllowedColor {
      return color === 'red' || color === 'blue';
    }
    
    let colors = getColorsFromServer();
    let allowedColors = colors.filter(isAllowedColor);
    

    La función isAllowedColor verifica si el color es ‘red’ o ‘blue’ y devuelve un booleano que se utiliza como una guardia de tipo. Esto permite que TypeScript infiera que el array filtrado solo consiste de tipos AllowedColor.

Comments are closed.