Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
¿Cuál es la diferencia entre `mixto` y `cualquiera`?

Los documentos dicen:

  • mixed : el "supertipo" de todos los tipos. Cualquier tipo puede fluir en un mixed .
  • any : el tipo "dinámico". Cualquier tipo puede fluir en any y viceversa.

¿Cuál sería un caso en el que mixed y any no se pueden usar indistintamente?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La diferencia es el "viceversa": any puede fluir hacia otros tipos pero mixed no pueden.

 /* @flow */ var numeric:number = 0; var anyTyped:any; var mixTyped:mixed; numeric = anyTyped; numeric = mixTyped; // This will throw a flow check error: "Cannot assign `mixTyped` to `numeric` because mixed is incompatible with number. [incompatible-type]"

De los documentos a los que se vinculó:

Vale la pena señalar cualquiera específicamente debido a la naturaleza especial de esta anotación. Use cualquiera para escapar de la tipificación estática de Flujo. En otras palabras, si Flow se interpone en su camino y está absolutamente convencido de que su programa tiene el tipo correcto, puede silenciar los errores anotando ubicaciones a lo largo de las rutas de error con type any.

over 4 years ago · Santiago Trujillo Denunciar

0

"Cualquiera" admite covarianza y contravarianza. Eso es porque "cualquiera" es un supertipo y un subtipo de todos los tipos.

Por lo tanto, esto funciona,

 let genericVariable: any = 20; let numericVariable: number; genericVariable = numericVariable; // No error numericVariable = genericVariable; // No error

mixto admite covarianza solamente. Es un supertipo y no un subtipo de todos los tipos.

 let genericVariable: mixed = 20; let numericVariable: number; numericVariable = genericVariable; // This shows error genericVariable = numericVariable; // This works fine.

Covarianza: el tipo genérico (padre) podría sustituirse por un tipo especial (hijo)

Contravarianza: el tipo especial (hijo) podría sustituirse por el tipo genérico (padre). Esto es un problema, a menos que esté protegido por ciertas convenciones.

over 4 years ago · Santiago Trujillo Denunciar

0

Cuando el flujo ve any , eso significa que puede usar cualquier tipo. El programa es indiferente al tipo de parámetro y no intentará inferir el tipo de resultado. Entonces, el tipo de resultado también será any .

Por ejemplo, el siguiente código no reportará ningún error:

 // @flow function add(one: any, two: any): number { return one + two; } add(1, 2); // Works. add("1", "2"); // Works. add({}, []); // Works.

Pero el tipo "mixto" debe procesarse de alguna manera para inferir el tipo real.

 // @flow function stringify(value: mixed) { // $ExpectError return "" + value; // Error! } stringify("foo");

En su lugar, debe asegurarse de que el valor sea de cierto tipo refinándolo.

 // @flow function stringify(value: mixed) { if (typeof value === 'string') { return "" + value; // Works! } else { return ""; } } stringify("foo");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda