Ao usar imports dinâmicos, vários imports do mesmo módulo geram Promises separadas. Com cache, dá para tratar imports do mesmo caminho com uma única Promise.
type ModuleCache = Map<string, Promise<unknown>>;
const modCache: ModuleCache = new Map();
export async function dynamicImport<T = unknown>(path: string): Promise<T> { const cache = modCache.get(path); if (cache) return cache as Promise<T>;
const modPromise = import(path) as Promise<T>; modCache.set(path, modPromise); return modPromise;}Onde isso rende na prática
Esse padrão é mais útil quando imports paralelos podem acertar o mesmo módulo ao mesmo tempo. Ele funciona bem em lazy dialogs, widgets administrativos e command palettes, onde a mesma corrida de import pode ser disparada por mais de um chamador.
A principal decisão de desenho é se Promises com erro devem continuar no cache. Se o requisito inclui retry, normalmente é mais simples limpar a entrada quando ocorre erro.
Nota prática
Este snippet funciona bem quando você não quer reescrever a mesma operação ou a mesma verificação em rotinas ligadas a typescript, javascript, performance. Mantido como um apoio pequeno, ele deixa a intenção mais clara para quem chama.
Se as ramificações e as pré-condições começarem a crescer, é melhor não concentrar tudo em um único snippet. Separar o passo a passo, o helper e as responsabilidades costuma ser mais fácil de manter.
hsb.horse