Saltar a contenido

1.3 Tipos de datos

Dart es de tipado estático con inferencia: el tipo se conoce al compilar.

Tipos simples

Tipo Ejemplo Nota
int 42 entero
double 3.14 decimal
num 5 o 5.5 padre de int y double
String 'hola' inmutable
bool true solo true/false

Cadenas

void main() {
  final s = 'Dart';
  print(s.length);                 // 4
  print(s.toUpperCase());          // DART
  print('Hola, $s y ${s.length}'); // interpolación
}

Colecciones

void main() {
  final lista = <int>[3, 1, 2];        // List: ordenada, admite repetidos
  final conjunto = <int>{1, 1, 2};     // Set: sin repetidos -> {1, 2}
  final mapa = <String, int>{'a': 1};  // Map: clave -> valor

  lista.add(4);
  print(lista);           // [3, 1, 2, 4]
  print(conjunto.length); // 2
  print(mapa['a']);       // 1
}

dynamic y Object

dynamic desactiva las comprobaciones de tipo; se evita salvo necesidad. Object? es el supertipo de todo.

Conversiones

void main() {
  print(int.parse('42'));      // 42
  print(double.parse('3.5'));  // 3.5
  print(int.tryParse('abc'));  // null (no lanza error)
  print(42.toString());        // 42
  print(3.9.toInt());          // 3 (trunca)
  print(3.toDouble());         // 3.0

  num n = 5;                   // un int es un num
  print(n);
}

Dart no convierte solo

double d = 5; funciona porque 5 es un literal que se interpreta como double, pero int i = 2.5; es un error de compilación. Para pasar de double a int hay que usar toInt(), round(), floor() o ceil().