Saltar al contenido
webtype.orgNonNullable

    ↑↓ mover · ⏎ abrir · esc cerrar

    Uniones

    NonNullable

    Elimina `null` y `undefined` de un tipo.

    Qué es

    Merece la pena leer la definición. Antes era un condicional distributivo; desde TypeScript 4.8 es `T & {}`, porque intersecar con el tipo objeto vacío elimina exactamente los dos tipos que no pueden tener propiedades. Más corto, más rápido y ya no distributivo — lo cual solo importa en los rincones.

    Ejemplos

    • NonNullable<string | null>
      string
    • NonNullable<string | undefined | null>
      string
    • NonNullable<null>
      never

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.

    Lo que no hace

    • No toca una propiedad anidada. `NonNullable<{ a: string | null }>` no cambia — la nulabilidad está dentro, y esto actúa fuera.
    • No acota un valor en tiempo de ejecución. Una variable de tipo `string | null` sigue necesitando una comprobación; esto solo describe el tipo tras ella.

    Conclusión

    La definición cambió bajo los pies de todos en la 4.8 y casi nadie se dio cuenta, que es el argumento para citar definiciones en vez de recordarlas.