🔍 搜索词
组织导入 import 排序 重命名
✅ 可实现性检查清单
- 这不会对现有的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
⭐ 建议
将被导入为许多命名导入之一的导出函数重命名可能会使导入规范列表变得无序。当我们执行自动导入时,我们尝试检测现有的命名导入列表当前是否已排序,并在正确的位置插入新的规范。当我们在重命名命令期间更新导入或导出规范时,我们也可以采用类似的方式。
📃 动机示例
我们有一个强制执行导入排序的eslint规则。我刚刚将一个函数 impliedNodeFormatForEmit
重命名为 getImpliedNodeFormatForEmit
,之后我不得不在6个不同的文件中修复eslint规则失败的问题。如果不用这样做就好了。
💻 用例
- 你打算用这个做什么? 更简单的重构,不会让linter发疯
- 当前方法存在哪些缺点? 它们需要我做很多繁琐的点击操作
- 你在等待期间使用了什么解决方法? 很多繁琐的点击操作
7条答案
按热度按时间nbysray51#
@RyanCavanaugh我对解决这个问题很感兴趣。我可以加入吗?
lnvxswe22#
根据仓库CONTRIBUTING,任何带有"Help wanted"标签的问题都可以由任何人解决。同时,避免提出问题索赔也很重要。请随意开始解决这个问题,不需要征求许可,因为它带有"Help wanted"标签。
mznpcxlj3#
感谢指出,我不知道关于索赔的问题。我忘记阅读贡献指南了🤦♂️
qij5mzcb4#
上下文
@abarghoud 我正在检查添加导入时我们排序的方式(关于这个问题的建议)
看起来我们是通过文件夹结构进行排序的,而不是通过变量名进行排序,而Eslint规则是按照变量名进行排序的。
TypeScript import(请注意,由于eslint的
sort-import
规则,我们在第2行出现了错误):Screen.Recording.2024-03-29.at.21.17.08.mov
下一步行动?
考虑到这些:
import
命令相同的顺序?;OR
我认为这是相关的,所以我也带来了这个:
Eslint团队选择不自动修复
--fix
中导入顺序的问题,因为这会改变代码的行为:eslint/eslint#11542
我的意思是,通过实现这种行为(重新排序行),我们甚至可能会增加与Eslint的冲突数量,因为每行的顺序在每个eslint配置的项目中可能被定义为不同。因此,我基于给定的使用场景反对这样做。
cunj1qz15#
@TulioPintoNeto 我支持保留TypeScript团队的自动导入顺序设计。这尤其重要,因为有多个ESLint规则可以配置以更改排序方法。
我认为需要修复的错误是在重命名文件时无法重新排序文件名。但是,我担心这可能不可能,因为我认为IDEs处理它而不是TypeScript本身。
Wdyt?
uklbhaso6#
对不起,我应该提到@andrewbranch。但是回答你的问题,@abarghoud:
src/services/
文件夹中找到大部分智能感知的东西;但我在这里强调的主要事情是,在重命名时重新排序行不会总是与Eslint产生一致的输出(根据此问题描述中提供的使用案例,这是期望的结果)。这是因为每个代码库都可以为其自己的导入顺序设置规则。
4bbkushb7#
TS服务器首选项控制排序顺序,
ts.OrganizeImports
下有许多实用程序来检测和应用这些首选项。