Comment simuler undefined dans Dart
Dans JS, il y a undefined et null. Undefined signifie "aucune valeur", null signifie "valeur équivalente à la vacuité". Dans Dart cependant (et peut-être dans d'autres langues, je ne sais pas, mais en ce moment j'utilise Dart), il n'y a pas d'indéfini, seulement null. Il est donc impossible de faire la distinction entre une valeur équivalente à la vacuité et l'absence de valeur.
Existe-t-il un moyen standard de simuler cette différence dans Dart?
Réponses
Non. La nullvaleur (de type Null) est la seule valeur intégrée qui représente l'absence de valeur. Il ne distingue pas pourquoi la valeur est absente.
C'est aussi (presque) le seul type que vous pouvez combiner avec un autre type directement dans le système de type. Avec une sécurité nulle, vous pourrez écrire int?pour int-ou- Null.
Si vous voulez un autre marqueur d'absence, vous pouvez utiliser (ou écrire) un Optiontype comme:
abstract class Option<T> {
final T value;
bool get hasValue => true;
Option(this.value);
factory Option.none() => const _OptionNone();
}
class _OptionNone implements Option<Never> {
const _OptionNone();
bool get hasValue => false;
T get value => throw UnsupportedError("None option has no value");
}
Ensuite, vous pouvez représenter une valeur ou aucune valeur. (Il existe des implémentations d'une telle classe, par exemple dans le package quiver ).