🔎 搜索词
“模块解析双重引用”
🕗 版本与回归信息
- 在版本4.9和5.0之间发生了变化
- 由于在TypeScript 5.0中引入了`"moduleResolution": "bundler",因此无法在之前的版本上进行测试。
⏯ Playground链接
https://github.com/remcohaszing/typescript-resolution-bug
💻 代码
请查看仓库。它不是很大,但包含了许多小的文件,这些文件不便粘贴到问题报告中。
重现步骤:
git clone https://github.com/remcohaszing/typescript-resolution-bug.git
cd typescript-resolution-bug
npm install
npx tsc -b repro
🙁 实际行为
$ tsc -b repro
repro/test/test.ts:4:12 - error TS2345: Argument of type 'import("/home/remco/Projects/typescript-resolution-bug/repro/node_modules/some-lib/index").SomeType' is not assignable to parameter of type 'import("/home/remco/Projects/typescript-resolution-bug/repro/node_modules/some-lib/index").SomeType'.
Types have separate declarations of a private property 'property'.
4 myFunction(new SomeType())
~~~~~~~~~~~~~~
Found 1 error.
🙂 预期行为
以下情况之一:
- 如果能成功重现,则认为该重现是有效的,不包含类型错误。
- 如果出现错误,但显示已解析路径的实际路径而不是剥离文件扩展名,则错误消息中的路径 完全相同。这种效果的一个好处是,在某些终端模拟器中,路径变得可点击。
关于此问题的附加信息
从 tsconfig.json
中移除 references
可以解决这个问题。
一个真实世界的例子可以在 https://github.com/remcohaszing/codemirror-languageservice 中找到。只需搜索 @ts-expect-error
即可。
1条答案
按热度按时间wgx48brx1#
我将一个 workaround 应用到了实际项目中:我将
module
选项设置为node16
,尽管preserve
更适合与捆绑器一起使用。