nonNulls
Filtra los null y, a la vez, estrecha el tipo del elemento de T? a T.
Lección
nonNulls toma un Iterable<A?> y
devuelve un Iterable<A> — cada null
desaparece, y el verificador de tipos lo sabe: nada de lo que venga
después necesita ya comprobar null. nonNulls es el nombre
idiomático en Dart; fxdart también acepta la grafía compact
de FxTS: son el mismo operador. El compact de FxTS descarta
los seis valores falsy de JS (undefined, null,
0, '', NaN, false);
Dart no tiene un concepto único de «falsy», así que el port solo elimina
null — un comportamiento deliberadamente más estrecho y
fácil de razonar.
Aparece constantemente después de pluck
o de cualquier búsqueda que devuelva T?: nonNulls(pluck(key, records))
te da una lista limpia y no nullable en un solo paso.
En la cadena síncrona, .nonNulls es un getter
heredado de Iterable — escríbelo sin paréntesis
(fx(xs).nonNulls) y, como devuelve un
Iterable<A> normal, envuélvelo en fx(...)
para seguir encadenando. No hay getter asíncrono, así que en un pipeline
asíncrono usa la función de nivel superior nonNullsAsync(...)
(o su alias de FxTS compactAsync) y envuélvela con
fxAsync(...).
Demo 1 · Fundamentos & estrechamiento de tipos
Demo 2 · Asíncrono, con concurrencia
Pruébalo tú
Ejercicio: usa nonNulls para descartar los null de
answers.
pluck — una fuente habitual de valores nullable ·
reject — descarta según un predicado cualquiera ·
compactObject — el equivalente para Map ·
uniq — elimina duplicados