Explicit Resource Management (using)
JavaScript 🔴 SeniorDéfinition
Le mot-clé using déclare une variable dont la méthode [Symbol.dispose]() est appelée automatiquement à la sortie du bloc ; await using fait de même avec [Symbol.asyncDispose](). La proposition « Explicit Resource Management » est terminée (Stage 4) et figure dans la liste TC39 des propositions attendues pour l'édition ES2027. Elle est déjà livrée dans V8 13.6, donc dans Node.js 24 (6 mai 2025), et TypeScript la compile depuis la 5.2. Équivalent du try-with-resources de Java ou du using de C#.
Analogie
Un robinet auto-coupant : il se ferme tout seul quand tu quittes la pièce, pas besoin de penser a le fermer.
Exemple de code
class Conn {
[Symbol.dispose]() { console.log('connexion fermée'); }
}
function requete() {
using db = new Conn(); // libéré à la sortie du bloc
using pile = new DisposableStack();
pile.defer(() => console.log('nettoyage différé'));
return 'ok';
} // ordre inverse : pile puis db
// async : await using s = await ouvrirSocket();
Cas d'usage
Connexions base de données, descripteurs de fichiers, verrous, transactions : tout ce qui exige un nettoyage garanti même en cas d'exception. DisposableStack regroupe plusieurs ressources à libérer dans l'ordre inverse.
Anti-pattern
Termes liés
Sources
Fiche mise à jour le 2026-09-27