El sistema de tipos de Dart es seguro (sólido) a veces denominado sound typing porque realiza una verificación de tipos (en compilación y en ejecución) garantizando la coincidencia de tipos de las expresiones:
- Declaración de inicialización,
- El tipo de retorno de un método,
- Etc....>
El analizador puede inferir el tipo de las Variables y los Métodos; pero cuando no tiene suficiente información para inferir un tipo específico, usa el tipo dynamic
.
Null Safety
Verificación de valores NULL
Sound typing de Dart por si solo no puede garantizar que una variable (o un valor de retorno) no sea NULL.
Los errores por valores NULL son tan comunes que las referencias nulas se han denominado el error del billón de dólares.
- Tony Hoare, inventor de la referencia nula
- Dart
2.9
introdujoSound Null Safety
como un mecanismo de verificación de valores NULL - warning:
- Ahora todos los tipos de Dart no admiten valores NULL de forma predeterminada y deben inicializarse con valores que no sean NULL, a menos que sean late:
int edad = 42;
late int estatura; // OK, pero puede resultar en errores en tiempo de ejecución nada obvios
Como resultado, las comprobaciones NULL en tiempo de ejecución ya no son necesarias:
if (value == null) {
return 0;
}
A veces necesitamos trabajar con APIs, con las que no podemos garantizar que devuelvan un valor que no sea NULL. Al hacer esto, Podemos usar el operador de aserción !
para asignar un valor posiblemente NULL a una variable no anulable.
int age = yourAge("Irving")!;
- Pero hay formas de declarar variables anulables (que aceptan valores NULL):
int? maybeValue;
La palabra clave late
Use late
para inicializar una variable cuando se lee por primera vez, en lugar de cuando se crea.
Es común usar late
en combinación con final
.
Clases
Si una variable de instancia que no acepta valores NULL no se puede inicializar con un valor predeterminado, configúrelo con un constructor:
class BaseUrl {
BaseUrl(this.hostName);
String hostName; // Ahora es valido
int port = 80; // OK
}
Consejos
- Cada vez que declare una variable en Dart, piense si debería ser null o no.
- Cuando cree una función, especifique el tipo de retorno.
Dart Null Safety: una guía para los tipos que no aceptan valores nulos | by Jaime Hernández | Medium