🔍 搜索词
移动到文件,具有未知扩展名。
✅ 可可行性检查清单
- 这不会对现有的TypeScript/JavaScript代码造成破坏性的变化
- 这不会改变现有JavaScript代码的运行时行为
- 这可以在不根据表达式的类型发出不同的JS的情况下实现
- 这不是一个运行时特性(例如库功能、带有JavaScript输出的非ECMAScript语法、JS的新语法糖等)
- 这不是要求添加一个新的实用程序类型的请求: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- 这个特性将与我们的设计目标一致: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
⭐ 建议
在 getMoveToRefactoringFileSuggestions
中,使用 tryGetExtensionFromPath
对要移动到的候选文件进行过滤,并忽略未知的文件扩展名。如果可以回退或切换到使用 SourceFile.scriptKind
和 SourceFile.isDeclarationFile
,但至少对于候选项忽略未知扩展名是可以接受的。
📃 激励示例
"Move to file"重构目前会在程序包含任何未知于TypeScript的源文件的文件扩展名时出错。是否有可能去除这个限制?错误是因为 getMoveToRefactoringFileSuggestions
方法使用 extensionFromPath
函数从程序中的所有文件中查找候选项。如果任何TypeScript插件提供具有非ts/js文件扩展名的外部文件,这将导致 Debug.assert
错误。例如, mrmckeb/typescript-plugin-css-modules#241。大多数其他语言服务功能都没有这个限制。至少当程序中有外部文件时,它不会出错。如果这个功能可以与其他文件扩展名一起工作,甚至允许在 Package TypeScript语言服务的其它语言服务器中使用这个功能,那就太好了。
💻 用例
- 你打算用这个做什么?
在项目中使用移动到文件重构,其中TypeScript插件添加了一个自定义模块,如vue和svelte。
- 我想到的解决方法
TypeScript插件在调用 getMoveToRefactoringFileSuggestions
之前对其进行猴子补丁,然后在之后恢复它。
3条答案
按热度按时间ruyhziif1#
感谢提出这个问题的@jasonlyu123!
到目前为止,我只有这两个关于这个问题的报告,@RyanCavanaugh和@navya9singh,但是如果在插件方面我能做些什么来减轻这个问题,请告诉我!
xxhby3vn2#
在使用VSCode的Astro和MDX扩展时,我经常遇到这个问题。除了在运行重构之前禁用这些扩展之外,还有其他解决方法吗?
b1payxdu3#
需要它。我相信这种情况在Vue项目中会经常发生。