import defer
JavaScript 🔴 SeniorDéfinition
Proposition TC39 au Stage 3 (« Deferring Module Évaluation ») : import defer * as ns from './lourd.js' charge et lie le module tout de suite mais n'exécute son code qu'au premier accès à une propriété de ns. Un module avec top-level await est évalué immédiatement. TypeScript 5.9 (1er août 2025) accepte la syntaxe et Deno 2.8 (22 mai 2026) l'exécute ; le support navigateur est encore limité.
Analogie
Une pièce dont on a la clé sur soi mais dont on n'allume la lumière qu'en entrant.
Exemple de code
import defer * as pdf from './generateur-pdf.js'; // lié, pas évalué
console.log('démarrage rapide');
export function exporter(doc) {
// Première lecture d'une propriété : le module s'exécute ici
return pdf.render(doc);
}
// Attention : les effets de bord du module sont déplacés aussi
Cas d'usage
Réduire le temps de démarrage d'une CLI ou d'un serveur qui charge de gros modules rarement utilisés, sans rendre le code appelant asynchrone.
Anti-pattern
Différer un polyfill ou un module qui enregistre des effets globaux : ils ne s'appliqueraient plus au bon moment.
Termes liés
Sources
Fiche mise à jour le 2026-09-27