TypeScript 5.9 の告知を見て知ったのだが、 import はするがその評価を遅延する、という構文が ES の Stage 3 になっている。
従来 import
や require
と同時に大きな副作用なあるようなモジュールを読み込む際、それを実際に使用するまで読み込みを遅延するようなテクニックがあった。例えば、 require
を使った次のようなコードである( Proposal からの引用):
// https://github.com/tc39/proposal-defer-import-eval/?tab=readme-ov-file#motivation
exports.doSomething = function (target) {
const operation = require('operation');
return operation(target);
}
これを解決するスマートな構文として次のようなものが提案されている( Proposal からの引用):
// https://github.com/tc39/proposal-defer-import-eval/?tab=readme-ov-file#proposal
import defer * as yNamespace from "y";
頻度はそう高くないが、 ESM で書いている場合に require
の例のような記述をすることは諦めていたので、なるほどなぁとなる提案だった。