tipo-void-typescript

Uso de Void en TypeScript

El tipo void en TypeScript representa la ausencia de un valor. Es similar al concepto de void que encontramos en otros lenguajes de programación como C++ y C#.

Se utiliza principalmente en el contexto de funciones para indicar que una función no retorna ningún valor significativo.

Cuando una función está diseñada para realizar una acción (a veces llamado efecto secundario), como modificar un estado o imprimir un mensaje en la consola. Entonces no necesita devolver un resultado, se especifica el tipo void.

function saludar(): void {
    console.log("Hola, mundo!");
}

let resultado: void = saludar(); // Correcto, pero innecesario
// resultado = 1; // Error: No se puede asignar el tipo 'number' al tipo 'void'.

En el ejemplo anterior, la función saludar tiene un tipo de retorno void, lo que significa que no devuelve ningún valor.

void es un subtipo de undefined. Esto significa que el valor undefined es una representación válida del tipo void, y puede ser utilizado en contextos donde se espera un valor void.

Asignación de variables

Una variable de tipo void, no se puede asignar. Únicamente puede recibir undefined como valor.

function imprimirMensaje(mensaje: string): void {
    console.log(mensaje);
}

const resultado: void = imprimirMensaje("Mensaje sin valor de retorno");

console.log(resultado);  // undefined

Aquí, el tipo de la variable resultado es void, ya que la función imprimirMensaje no devuelve ningún valor.

En general, el tipo void no se usa para declarar variables. Su propósito principal es en las funciones. Sin embargo, algunas expresiones pueden tener un tipo void, especialmente cuando se están utilizando funciones con efectos secundarios.

Casos de uso comunes

Funciones de Efecto Secundario

Las funciones que se utilizan para realizar acciones pero no necesitan devolver un valor, como las funciones que imprimen en consola o modifican variables globales, suelen tener el tipo de retorno void.

function registrarMensaje(mensaje: string): void {
    console.log(mensaje);
}

registrarMensaje("Este es un mensaje de registro."); // Este es un mensaje de registro.

Interfaces

En las interfaces, los métodos que no retornan un valor también se definen con el tipo void.

interface Procesador {
    iniciar(): void;
    detener(): void;
}

class Computadora implements Procesador {
    iniciar(): void {
        console.log("Computadora iniciada.");
    }

    detener(): void {
        console.log("Computadora detenida.");
    }
}

let pc: Computadora = new Computadora();
pc.iniciar(); // Computadora iniciada.
pc.detener(); // Computadora detenida.