Svelte 公式の TypeScript 化したプロジェクトで、.svelte テンプレート内で自作の TypeScript ファイルをインポートしたらコンパイルエラーになってしまいました。
Svelte の TypeScript 化
公式のテンプレート README に書かれているスクリプトを実行しただけ
$ npx degit sveltejs/template svelte-app
cd svelte-app
$ node scripts/setupTypeScript.js
環境
"svelte": "^3.0.0", "typescript": "^4.0.0", "rollup": "^2.3.4",
.svelte テンプレート内で .ts ファイルをインポートしたらエラーが発生する
// /src/Component.svelte <script lang="ts"> import { myScript } from './myScript'; </script>
=> [!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
rollup の TypeScript の設定に rootDir を指定すれば OK
rollup.config の plugin.typescript に rootDir で .ts ファイルのある場所を指定してあげれば解決しました。
plugins: [
// …
typescript({
sourceMap: !production,
inlineSources: !production,
+ rootDir: "./src",
}),
自分のプロジェクトでは .ts ファイルも /src 内に配置していたので rootDir: './src' と指定しています。
設定を保存すると自動的に再ビルドされエラーが消え問題なく .svelte ファイル内で TypeScript のモジュールが使えるようになりました。
おわり
stackoverflow では新しいバージョンでは修正されているのように書かれていたのですが、この方法で解決することが出来ました。Svelte template で使われている rollup のバージョンの関係?
rollup のことは詳しく解っていないので、なぜこれで解決するのかまでは調べられていません。あしからず :pray:
[参考]

