pnpm
使って特定の tsconfig.json
(Vite のデフォルトの tsconfig.json
など) を参照した状態で tsc
を走らせると、型エラーが出ることがある。
下記は、その例:
The inferred type of 'default' cannot be named without a reference to '.pnpm/vite@5.0.12_@types+node@20.11.16/node_modules/vite'. This is likely not portable. A type annotation is necessary.ts(2742)
関連 Issue は microsoft/TypeScript#42873 で、ちょうど 2 年前くらいから開かれていて、今でも書き込みがされていたり、参照されていたりする Issue。
この Issue に書かれた再現方法はいくつかあるが、基本的には pnpm
を使っていて、同じパッケージが複数箇所にある (declaration: true
があれば、おそらく常時) 場合にエラーが発生するとある。
解決方法としては、今回の場合、 vite
に関する型 (タイトルで言えば Y
に関する型) が解決出来ないと言われているので、下記のようにすれば、一応治る:
import type {} from "vite"; // タイトルの場合は import type {} from "Y";
解決策が集められているコメントもあるので、もし遭遇した場合は自分に合ったものを採用すると良さそう: