Skip to content

allowImportingTsExtensionsとrewriteRelativeImportExtensionsの関係

元ネタ

allowImportingTsExtensionstsc のオプションで、通常は 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 も有効にして困らない。