allowImportingTsExtensionsとrewriteRelativeImportExtensionsの関係
元ネタ
allowImportingTsExtensions は tsc のオプションで、通常は tsconfig.json などに書く。
{ "compilerOptions": { "allowImportingTsExtensions": true }}このオプションを有効にすると import のとき .ts や .tsx 拡張子を記述できるようになる。
import { ... } from './presenter.ts'ただしコンパイル後のファイルは .js ファイルになるので node からは実行できなくなってしまう。ビルド時に import の参照も書き換えるため tsc には rewriteRelativeImportExtensions オプションが存在するが、動的インポートの際にうまく変換できない等の不都合があるので、不必要な複雑さを入れない方がいいとされていた。
そうして2024年8月頃に、Node v22.6で —experimental-strip-types オプションが追加されたので、これを有効にするのであれば allowImportingTsExtensions も有効にして困らない。