tsconfigのmodule
compile後の
JavaScriptのModule System
の形式の指定
import
/
require()
などのmodule部分の構文に関してのみの話
docs
TypeScript: Documentation - Modules - Theory
TypeScript: Documentation - Modules - Reference
以下の2つはやや特殊
module: node16
module: nodenext
2024/4現在は
module: node16
と同じ
node: preserve
https://www.typescriptlang.org/tsconfig#preserve
importとrequireを併用できる
いつ必要になるのだろう
https://www.typescriptlang.org/docs/handbook/modules/reference.html#preserve
何を指定すればよいのか?
tsconfig/basesでtarget、module、libを参考にする
を参考にすればいい
tsconfigのmodule
は2022年頃から徐々に複数の責務を持つようになり複雑化している
TypeScriptのmoduleオプションの話、あるいはTypeScript開発者の苦悩、あるいはCJSとESMの話
以前までは、
import
/
require()
などのmodule部分の構文に関してのみの話だったが、
module: node16
などが増えてからは、ランタイムでどう扱うかという意味が増えている
歴史的経緯があって仕方ないとは言え、かなりカオスだ...
mrsekut.icon
#WIP
古いmoduleを指定するとcompile errorになることがある
例えば、
Top-Level Await
を使用しているのに、
es2022
や
node16
以前のものを指定するとエラーになる