dynamic importを使う際、同じモジュールを複数回インポートすると都度Promiseが生成される。 キャッシュすることで、同じパスへのインポートを1回の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;}
hsb.horse