Tipado sensitivo al flujo
# Tipado sensitivo al flujo

En teoría de lenguaje de programación, tipificación sensible al flujo es un sistema de tipos donde el tipo de una variable es determinado por el flujo de control.

Clásicamente, en los lenguajes con tipifícado estático, una variable queda ligada a un tipo durante todo su tiempo de uso. En los sistemas de tipificación sensible al flujo, el tipo de una variable puede cambiar dentro del cuerpo de un método, mientras atraviesa (o fluye a través de) las estructuras de control. El tipo se determina usando inferencia de tipos y la información de tipos fluye usando Tipo de dato algebraico.

## Ejemplo

El siguiente ejemplo en Ceylon ilustra el concepto:

Su salida es la siguiente:

## Beneficios

Esta técnica en conjunto con la inferencia de tipos reduce la necesidad de escribir anotaciones de tipo para todas las variables o hacer conversión de tipos, como ocurre en lenguajes con sistemas dinámicos de tipos, reduce la verbosidad en los lenguajes y ayuda a producir código más conciso, más fácil de leer y modificar.

Puede también ayudar a obtener implementaciones más rápidas de lenguajes con tipos dinámicos al predecir estáticamente el tipo de objetos.

## Implementaciones

Whiley, creado por David J. Pearce, fue el primer lenguaje en hacer uso de tipificación sensible al flujo en 2009.

Desde su introducción, otros lenguas han hecho uso de él, concretamente Ceylon, Kotlin, TypeScript y Facebook Flow.

