Types intégrés de Dart

Tableau des types primitifs intégrés de Dart

Nom de catégorieIdentifiant du typeÉcriture / exemple littéralDescription courte
Numbers (Nombres)int, doubleint a = 10; double b = 3.14;Deux familles de nombres : entiers et nombres à virgule flottante double précision ; leur classe parente commune est num
Strings (Chaînes de caractères)Stringvar str = "foxdevelop.com";Stocke une séquence de caractères UTF-16, gère l’interpolation, les chaînes multilignes et les chaînes brutes
Booleans (Booléens)boolbool flag = true;Seules deux valeurs possibles : true / false
Records (Enregistrements tuples)Littéral record (v1, v2)var record = (10, "test");Type composite à longueur fixe avec plusieurs valeurs, prend en charge la décomposition
Functions (Fonctions)Functionvoid fn() {} Function func = ()=>1;Objets de première classe : assignables, transmissibles en paramètre, utilisables comme valeur de retour
Lists (Listes / Tableaux)Listvar list = [1,2,3];Collection ordonnée autorisant les doublons, équivalent aux tableaux
Sets (Ensembles)Setvar set = {1,2,3};Collection non ordonnée sans éléments dupliqués
Maps (Correspondances clé-valeur)Mapvar map = {"name":"Tom"};Structure de stockage de paires clé-valeur, les clés sont uniques
Runes (Points de code Unicode)RunesRunes("\u{1f600}")Accès bas niveau aux points de code Unicode ; l’utilisation du package characters est officiellement recommandée à la place
Null (Valeur nulle)NullNull n = null;Sa seule valeur est null, type racine fondamental du système de sécurité null

Toutes les variables en Dart sont fondamentalement des objets (instances de classes). Vous pouvez les créer rapidement avec des littéraux ou les initialiser en appelant le constructeur correspondant.

'hello' est un littéral de chaîne, true un littéral booléen ; le constructeur Map() crée une instance de Map.

Types auxiliaires spéciaux du langage

Ce ne sont pas des types primitifs intégrés, mais ce sont tous des mots-clés de Dart.

Ces types remplissent des rôles spécifiques pour le système de types, la programmation asynchrone et la vérification statique :

TypeDescription de son rôle
ObjectClasse parente de toutes les classes Dart, à l’exception de Null
EnumClasse parente de toutes les énumérations
Future / StreamSpécifiques à la programmation asynchrone
IterableUtilisé pour les boucles for-in et les générateurs synchrones
NeverExpression qui ne termine jamais normalement (utilisé pour marquer les fonctions qui lèvent toujours une exception)
dynamicDésactive la vérification statique des types ; préférez utiliser Object / Object?
voidSans valeur de retour, fréquemment utilisé comme type de retour des fonctions

1 Numbers Nombres

Classe parente : num

Les nombres se divisent en deux sous-classes : int (entier) et double (virgule flottante), toutes deux héritent de num

1.1 int Entier

Différence de plages (Dart fonctionne aussi en frontend, d’où l’existence d’une version Web) :

  • Plateformes natives : -2^63 ~ 2^63 - 1
  • Web (basé sur JS) : -2^53 ~ 2^53 - 1

Sans point décimal ; prend en charge la notation décimale et hexadécimale avec le préfixe 0x

Exemple


void main() {
	// Entier décimal
	var pageCount = 123;
	
	// Hexadécimal
	var hex = 0xDEADBEEF;
	
	// Séparateur de chiffres par underscore (Dart 3.6+, améliore la lisibilité)
	var million = 1_000_000;
	var mac = 0x00_14_22_01_23_45;
	
	print(pageCount);
	print(hex);
	print(million);
	print(mac);
}Langage du code : Dart (dart)

Résultat d’exécution

123
3735928559
1000000
86469845829

1.2 double Nombre à virgule flottante double précision

Contient un point décimal ou une notation scientifique

void main() {
	var pi = 3.14; // point décimal
	var raid = 1.61e5; // 1,61 * 10^5 notation scientifique
	var tiny = 0.000_000_000_02; // underscore sur les décimales
	
	print(pi);
	print(raid);
	print(tiny);
}Langage du code : PHP (php)
3.14
161000.0
2e-11Langage du code : CSS (css)

1.3 Classe parente num

Les variables déclarées en num peuvent stocker à la fois des int et des double :

void main() {
	num money = 5;
	money += 2.5; // Conversion automatique en double, money = 7,5
	
	// Affecter un int à un double convertit automatiquement en 1,0
	double zoom = 1;
	
	print(money);
	print(zoom);
}Langage du code : PHP (php)

Résultat d’exécution

7.5
1.0Langage du code : CSS (css)

1.4 Conversion mutuelle des types

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); // Conserver 2 décimales → "3.14"

	
	print(one);
	print(pi);
	print(pi2);
}Langage du code : JavaScript (javascript)

Résultat d’exécution

123
3.14
3.14Langage du code : CSS (css)

1.5 Opérateurs bit à bit exclusifs à int

Seul int gère les décalages, les opérateurs ET/OU/XOR bit à bit et la négation bit à bit. Voir : Dart Bitwise and shift operators – FoxDevelop

void main() {
	print(3 << 1);  // Décalage gauche 0011 <<1 → 0110
	print(3 | 4);   // OU bit à bit
	print(3 & 4);   // ET bit à bit
	print(~3);       // Négation bit à bit
}Langage du code : PHP (php)
6
7
0
-4

1.6 Constantes numériques (compile-time constant)

Les littéraux numériques purs et les opérations arithmétiques entre constantes peuvent être marqués avec const

Les valeurs calculées de manière fixe pendant la phase de compilation (avant l’exécution du programme), qui ne changent jamais à l’exécution et ne nécessitent pas de recalcul, sont appelées constantes de compilation et modifiées par const.

const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // Constante de compilationLangage du code : JavaScript (javascript)

const : constante de compilation ; le compilateur calcule l’expression avant l’exécution et écrit directement la valeur fixe dans le binaire compilé ; à l’exécution, seule une lecture a lieu, pas de calcul supplémentaire.

final : constante d’exécution (la valeur est affectée au lancement et ne peut plus être modifiée après).

1.7 Méthodes mathématiques natives

Disponibles directement sur num ; pour des calculs complexes utilisez dart:math

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

num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Langage du code : PHP (php)

2. String Chaîne de caractères

Séquence encodée en UTF-16 pour représenter du texte, deux manières de déclaration : guillemets simples ou doubles.

2.1 Modes de déclaration : guillemets simples / doubles

var s1 = 'chaîne avec guillemets simples';
var s2 = "chaîne avec guillemets doubles";

// Caractères d'échappement
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Alterner les guillemets évite l'échappement
Langage du code : JavaScript (javascript)

Certains caractères dans les chaînes ont une signification spéciale (guillemets doubles ", saut de ligne, antislash \). Écrits directement, ils cassent la structure de la chaîne et provoquent des erreurs de compilation.

Le caractère d’échappement \ annule le rôle spécial des caractères ou affiche des symboles invisibles.

Exemple : les touches Entrée, Tab ne sont pas visibles et nécessitent des séquences d’échappement comme \t. Testez le code suivant pour comprendre :

  print("name\tage\tcountry");
  print("Jack\t18\tUSA");
  print("Lucy\t20\tEgypt");Langage du code : PHP (php)

2.2 Interpolation de chaîne ${expression}

  • Pour les variables simples, les accolades peuvent être omises : $variable
  • Les objets appellent automatiquement .toString()
void main() {
	var word = "interpolation";
	var str1 = "Dart dispose de la fonction $word";
	var str2 = "Majuscules : ${word.toUpperCase()}";
	print(str2); // Majuscules : INTERPOLATION
}Langage du code : JavaScript (javascript)

2.3 Concaténation de chaînes

  1. Les littéraux adjacents se concatènent automatiquement (même avec saut de ligne)
  2. Opérateur + pour concaténer
var s1 = "Première ligne"
    "Deuxième ligne";
var s2 = "a" + "b";
assert(s1 == "Première ligneDeuxième ligne");
assert(s2 == "ab");Langage du code : JavaScript (javascript)

2.4 Chaînes multilignes : triples guillemets simples  »’ / triples guillemets doubles «  » »

void main() {
	var multi1 = '''
	Texte
	multiligne
	''';

	var multi2 = """
	Chaîne multiligne avec triples guillemets doubles
	hello foxdevelop.com
	""";
	
	print(multi1);
	print(multi2);

}Langage du code : PHP (php)
        Texte
        multiligne

        Chaîne multiligne avec triples guillemets doubles
        hello foxdevelop.comLangage du code : CSS (css)

Les guillemets doubles à l’intérieur de triples simples et inversement n’ont pas besoin d’échappement :

2.5 Chaînes brutes r » » sans interprétation des échappements

var raw = r"Le saut de ligne \n n'a aucun effet";
print(raw); // Affiche \n tel quel
Langage du code : PHP (php)

2.6 Restrictions sur les chaînes const

Le contenu interpolé doit être une constante de compilation (nombres, bool, chaînes constantes) ; les variables normales et collections ne sont pas autorisées.

const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// Chaîne constante valide
const valid = "$cNum $cBool $cStr";

var normalNum = 10;
// Invalide : l'interpolation contient une variable non constante 
// const invalid = "$normalNum";
Langage du code : JavaScript (javascript)

3. bool Type booléen

Deux seules instances : true / false, toutes deux des constantes de compilation

Dart suit un typage fort : impossible d’évaluer directement la véracité par des valeurs, des comparaisons explicites sont obligatoires

void main() {
	var emptyStr = "";
	print(emptyStr.isEmpty); // Vérifier chaîne vide

	var zero = 0;
	print(zero == 0); // Vérifier zéro

	var nil = null;
	print(nil == null); // Vérifier null

	var nan = 0 / 0;
	print(nan.isNaN); // Vérifier non-nombre

}Langage du code : PHP (php)

4. Runes & characters Gestion des caractères Unicode

  1. Runes : expose les points de code Unicode internes, solution obsolète
  2. Recommandé package:characters : traite les caractères visuellement complets (groupes de graphèmes, ex : emojis de drapeaux)

Syntaxe d’échappement Unicode

  • 4 chiffres hexadécimaux : \uXXXX
  • Grands points de code avec plus de 4 chiffres : \u{valeur_hex}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Langage du code : JavaScript (javascript)

Exemple du package characters

import 'package:characters/characters.dart';
void main() {
  var text = "Hi 🇩🇰";
  print(text.characters.last); // Affiche l'emoji drapeau du Danemark complet
}
Langage du code : JavaScript (javascript)

5. Symbol Symbole

Utilisé pour la réflexion et l’obfuscation du code, littéral #identifiant, constante de compilation

L’obfuscation ne modifie pas les Symbol ; adapté pour référencer dynamiquement des identifiants par leur nom.

#userName
#getData
Langage du code : CSS (css)

6. Null Type valeur nulle

Sa seule valeur est null. Dans le système de sécurité null, Null est un type racine indépendant, tous les types annulables sont compatibles avec null.

String? name = null;
Null n = null;
Langage du code : JavaScript (javascript)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *