Tipos integrados de Dart

Tabla de tipos básicos integrados de Dart

Nombre de categoríaIdentificador de tipoSintaxis / ejemplo literalDescripción breve
Numbers (Números)int, doubleint a = 10; double b = 3.14;Dos grupos de números: enteros y números de coma flotante de doble precisión; su clase padre común es num
Strings (Cadenas de texto)Stringvar str = "foxdevelop.com";Almacena secuencias de caracteres UTF-16, admite interpolación, cadenas multilínea y cadenas en bruto
Booleans (Booleanos)boolbool flag = true;Solo dos valores posibles: true / false
Records (Registros de tupla)Literal de registro (v1, v2)var record = (10, "test");Tipo compuesto de longitud fija con varios valores, admite desestructuración
Functions (Funciones)Functionvoid fn() {} Function func = ()=>1;Son objetos de primera clase: se pueden asignar, pasar como parámetro y devolver como valor de retorno
Lists (Listas / Arrays)Listvar list = [1,2,3];Colección ordenada que permite elementos repetidos, equivalente a arrays
Sets (Conjuntos)Setvar set = {1,2,3};Colección desordenada sin elementos duplicados
Maps (Mapeos clave-valor)Mapvar map = {"name":"Tom"};Estructura de almacenamiento de pares clave-valor, las claves son únicas
Runes (Puntos de código Unicode)RunesRunes("\u{1f600}")Accede a los puntos de código Unicode a bajo nivel; oficialmente se recomienda usar el paquete characters en su lugar
Null (Valor vacío)NullNull n = null;Su único valor es null, tipo raíz fundamental del sistema de seguridad nula

Todas las variables en Dart son esencialmente objetos (instancias de clase). Se pueden crear rápidamente mediante literales o inicializar llamando al constructor correspondiente.

'hello' es un literal de cadena, true un literal booleano; el constructor Map() crea una instancia de Map.

Tipos auxiliares especiales del lenguaje

No son tipos básicos integrados, pero todos son palabras clave de Dart.

Estos tipos cumplen funciones especiales en el sistema de tipos, programación asíncrona y comprobación estática:

TipoDescripción de su función
ObjectClase padre de todas las clases Dart excepto Null
EnumClase padre de todas las enumeraciones
Future / StreamEspecíficos para programación asíncrona
IterableUsado para bucles for-in y generadores síncronos
NeverExpresión que nunca finaliza correctamente (se usa para marcar funciones que siempre lanzan excepciones)
dynamicDesactiva la comprobación estática de tipos; se recomienda usar Object / Object? en su lugar
voidSin valor de retorno, usado frecuentemente como tipo de retorno de funciones

1 Numbers Números

Clase padre: num

Los números se dividen en dos subclases: int (entero) y double (coma flotante), ambas heredan de num

1.1 int Entero

Diferencia de rangos (Dart también se usa en frontend, por lo que existe la versión web):

  • Plataformas nativas: -2^63 ~ 2^63 - 1
  • Web (basado en JS): -2^53 ~ 2^53 - 1

Sin punto decimal; admite notación decimal y hexadecimal con prefijo 0x

Ejemplo


void main() {
	// Entero decimal
	var pageCount = 123;
	
	// Hexadecimal
	var hex = 0xDEADBEEF;
	
	// Separador de dígitos con guion bajo (Dart 3.6+, mejora la legibilidad)
	var million = 1_000_000;
	var mac = 0x00_14_22_01_23_45;
	
	print(pageCount);
	print(hex);
	print(million);
	print(mac);
}Lenguaje del código: Dart (dart)

Salida

123
3735928559
1000000
86469845829

1.2 double Número de coma flotante de doble precisión

Contiene punto decimal o notación científica

void main() {
	var pi = 3.14; // punto decimal
	var raid = 1.61e5; // 1.61 * 10^5 notación científica
	var tiny = 0.000_000_000_02; // guion bajo en decimales
	
	print(pi);
	print(raid);
	print(tiny);
}Lenguaje del código: PHP (php)
3.14
161000.0
2e-11Lenguaje del código: CSS (css)

1.3 Clase padre num

Las variables declaradas como num pueden almacenar tanto int como double:

void main() {
	num money = 5;
	money += 2.5; // Convierte automáticamente a double, money = 7.5
	
	// Al asignar un int a double se convierte automáticamente a 1.0
	double zoom = 1;
	
	print(money);
	print(zoom);
}Lenguaje del código: PHP (php)

Salida

7.5
1.0Lenguaje del código: CSS (css)

1.4 Conversión mutua de tipos

void main() {
	// String → int
	var one = int.parse('123');


	// String → double
	var pi = double.parse('3.14');

	// int / double → String
	String intStr = 99.toString();
	String pi2 = 3.14159.toStringAsFixed(2); // Mantener 2 decimales → "3.14"

	
	print(one);
	print(pi);
	print(pi2);
}Lenguaje del código: JavaScript (javascript)

Salida

123
3.14
3.14Lenguaje del código: CSS (css)

1.5 Operadores bit a bit exclusivos de int

Solo int admite desplazamientos, operadores AND/OR/XOR bit a bit y negación bit a bit. Consulta: Dart Bitwise and shift operators – FoxDevelop

void main() {
	print(3 << 1);  // Desplazamiento a la izquierda 0011 <<1 → 0110
	print(3 | 4);   // OR bit a bit
	print(3 & 4);   // AND bit a bit
	print(~3);       // Negación bit a bit
}Lenguaje del código: PHP (php)
6
7
0
-4

1.6 Constantes numéricas (compile-time constant)

Los literales numéricos puros y las operaciones aritméticas con constantes se pueden marcar con const

Los valores que se calculan de forma fija durante la fase de compilación (antes de ejecutar el programa) y nunca cambian en tiempo de ejecución se denominan constantes de compilación y se modifican con const.

const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Constante de compilaciónLenguaje del código: JavaScript (javascript)

const: constante de compilación; el compilador calcula la expresión antes de ejecutar el programa y guarda el valor fijo directamente en el binario compilado; en tiempo de ejecución solo se lee, sin cálculos adicionales.

final: constante de tiempo de ejecución (se asigna al ejecutar y no se puede modificar después).

1.7 Métodos matemáticos integrados

Disponibles directamente en num; para cálculos complejos usa dart:math

abs(), ceil(), floor(), round(), etc.

num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Lenguaje del código: PHP (php)

2. String Cadena de texto

Secuencia codificada en UTF-16 para representar texto; dos formas de definición: comillas simples o dobles.

2.1 Formas de definición: comillas simples / dobles

var s1 = 'cadena con comillas simples';
var s2 = "cadena con comillas dobles";

// Caracteres de escape
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Alternar comillas evita escapar
Lenguaje del código: JavaScript (javascript)

Algunos caracteres dentro de cadenas tienen un significado especial (como las comillas dobles ", saltos de línea, barra invertida \). Si se escriben directamente rompen la estructura de la cadena y causan errores del compilador.

El carácter de escape \ anula el significado especial de los caracteres o imprime símbolos invisibles.

Ejemplo: teclas como Enter o Tab no son visibles y requieren secuencias de escape como \t. Prueba el siguiente código para entenderlo:

  print("name\tage\tcountry");
  print("Jack\t18\tUSA");
  print("Lucy\t20\tEgypt");Lenguaje del código: PHP (php)

2.2 Interpolación de cadenas ${expresión}

  • En variables simples se pueden omitir las llaves: $variable
  • Los objetos llaman automáticamente a .toString()
void main() {
	var word = "interpolation";
	var str1 = "Dart tiene $word";
	var str2 = "Mayúsculas: ${word.toUpperCase()}";
	print(str2); // Mayúsculas: INTERPOLATION
}Lenguaje del código: JavaScript (javascript)

2.3 Concatenación de cadenas

  1. Literales adyacentes se concatenan automáticamente (incluso con salto de línea)
  2. Operador + para concatenar
var s1 = "Primera línea"
    "Segunda línea";
var s2 = "a" + "b";
assert(s1 == "Primera líneaSegunda línea");
assert(s2 == "ab");Lenguaje del código: JavaScript (javascript)

2.4 Cadenas multilínea: tres comillas simples »’ / tres comillas dobles «»»

void main() {
	var multi1 = '''
	Texto
	multilínea
	''';

	var multi2 = """
	Cadena multilínea con tres comillas dobles
	hello foxdevelop.com
	""";
	
	print(multi1);
	print(multi2);

}Lenguaje del código: PHP (php)
        Texto
        multilínea

        Cadena multilínea con tres comillas dobles
        hello foxdevelop.comLenguaje del código: CSS (css)

Las comillas dobles dentro de triples simples y viceversa no necesitan carácter de escape:

2.5 Cadenas en bruto r»» sin interpretar secuencias de escape

var raw = r"El salto de línea \n no surte efecto";
print(raw); // Imprime \n tal cual
Lenguaje del código: PHP (php)

2.6 Restricciones de cadenas constantes

El contenido interpolado debe ser una constante de compilación (números, bool, cadenas constantes); no se admiten variables normales ni colecciones.

const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// Cadena constante válida
const valid = "$cNum $cBool $cStr";

var normalNum = 10;
// Inválido: la interpolación contiene una variable no constante 
// const invalid = "$normalNum";
Lenguaje del código: JavaScript (javascript)

3. bool Tipo booleano

Solo dos instancias: true / false, ambas son constantes de compilación

Dart tiene tipado estricto: no se puede evaluar la veracidad directamente con valores, se requieren comparaciones explícitas

void main() {
	var emptyStr = "";
	print(emptyStr.isEmpty); // Comprobar cadena vacía

	var zero = 0;
	print(zero == 0); // Comprobar cero

	var nil = null;
	print(nil == null); // Comprobar null

	var nan = 0 / 0;
	print(nan.isNaN); // Comprobar no número

}Lenguaje del código: PHP (php)

4. Runes & characters Manejo de caracteres Unicode

  1. Runes: exposición de los puntos de código Unicode internos, solución obsoleta
  2. Recomendado package:characters: procesar caracteres visuales completos (grupos de grafemas, ej: emojis de banderas)

Sintaxis de escape Unicode

  • 4 dígitos hexadecimales: \uXXXX
  • Puntos de código grandes de más de 4 dígitos: \u{hexadecimal}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Lenguaje del código: JavaScript (javascript)

Ejemplo del paquete characters

import 'package:characters/characters.dart';
void main() {
  var text = "Hi 🇩🇰";
  print(text.characters.last); // Imprime el emoji completo de la bandera de Dinamarca
}
Lenguaje del código: JavaScript (javascript)

5. Symbol Símbolo

Usado para reflexión y ofuscación de código, literal #identificador, constante de compilación

La ofuscación no modifica los Symbol; ideal para referenciar identificadores dinámicamente por su nombre.

#userName
#getData
Lenguaje del código: CSS (css)

6. Null Tipo valor vacío

Su único valor es null. En el sistema de seguridad nula, Null es un tipo raíz independiente, todos los tipos anulables son compatibles con null.

String? name = null;
Null n = null;
Lenguaje del código: JavaScript (javascript)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *