En lenguajes de programación (especialmente lenguajes funcionales), un tipo opcional es un tipo polimórfico que representa la encapsulación de un valor opcional; por ejemplo, se utiliza como el tipo de retorno de las funciones que puedan o no devolver un valor significativo cuando se aplican. Se compone de ya sea un Constructor vacío (llamado "Ninguno" o "Nada"), o un constructor que encapsula el tipo de datos original A (escrito "Justo A" o "Algún A"). Fuera de la programación funcional, estos son conocidos como tipos anulables.