TypeScript Update import/export specifier sort on rename

q43xntqr  于 2个月前  发布在  TypeScript
关注(0)|答案(7)|浏览(30)

🔍 搜索词

组织导入 import 排序 重命名

✅ 可实现性检查清单

⭐ 建议

将被导入为许多命名导入之一的导出函数重命名可能会使导入规范列表变得无序。当我们执行自动导入时,我们尝试检测现有的命名导入列表当前是否已排序,并在正确的位置插入新的规范。当我们在重命名命令期间更新导入或导出规范时,我们也可以采用类似的方式。

📃 动机示例

我们有一个强制执行导入排序的eslint规则。我刚刚将一个函数 impliedNodeFormatForEmit 重命名为 getImpliedNodeFormatForEmit ,之后我不得不在6个不同的文件中修复eslint规则失败的问题。如果不用这样做就好了。

💻 用例

  1. 你打算用这个做什么? 更简单的重构,不会让linter发疯
  2. 当前方法存在哪些缺点? 它们需要我做很多繁琐的点击操作
  3. 你在等待期间使用了什么解决方法? 很多繁琐的点击操作
nbysray5

nbysray51#

@RyanCavanaugh我对解决这个问题很感兴趣。我可以加入吗?

lnvxswe2

lnvxswe22#

根据仓库CONTRIBUTING,任何带有"Help wanted"标签的问题都可以由任何人解决。同时,避免提出问题索赔也很重要。请随意开始解决这个问题,不需要征求许可,因为它带有"Help wanted"标签。

mznpcxlj

mznpcxlj3#

感谢指出,我不知道关于索赔的问题。我忘记阅读贡献指南了🤦‍♂️

qij5mzcb

qij5mzcb4#

上下文

@abarghoud 我正在检查添加导入时我们排序的方式(关于这个问题的建议)
看起来我们是通过文件夹结构进行排序的,而不是通过变量名进行排序,而Eslint规则是按照变量名进行排序的。
TypeScript import(请注意,由于eslint的sort-import规则,我们在第2行出现了错误):
Screen.Recording.2024-03-29.at.21.17.08.mov

下一步行动?

考虑到这些:

  • 我们是否应该使用与import命令相同的顺序?;

OR

  • 我们是否应该使用与Eslint规则相同的顺序?

我认为这是相关的,所以我也带来了这个:
Eslint团队选择不自动修复--fix中导入顺序的问题,因为这会改变代码的行为:
eslint/eslint#11542
我的意思是,通过实现这种行为(重新排序行),我们甚至可能会增加与Eslint的冲突数量,因为每行的顺序在每个eslint配置的项目中可能被定义为不同。因此,我基于给定的使用场景反对这样做。

cunj1qz1

cunj1qz15#

@TulioPintoNeto 我支持保留TypeScript团队的自动导入顺序设计。这尤其重要,因为有多个ESLint规则可以配置以更改排序方法。
我认为需要修复的错误是在重命名文件时无法重新排序文件名。但是,我担心这可能不可能,因为我认为IDEs处理它而不是TypeScript本身。
Wdyt?

uklbhaso

uklbhaso6#

对不起,我应该提到@andrewbranch。但是回答你的问题,@abarghoud:

  • 这是一个体验增强,而不是一个bug(不是说这个案例的命名规则也很重要哈哈);
  • 可能可以使用TypeScript编译器实现这一点。智能感知重构/格式化/代码修复的责任在于TypeScript编译器本身。你可能会在src/services/文件夹中找到大部分智能感知的东西;

但我在这里强调的主要事情是,在重命名时重新排序行不会总是与Eslint产生一致的输出(根据此问题描述中提供的使用案例,这是期望的结果)。这是因为每个代码库都可以为其自己的导入顺序设置规则。

4bbkushb

4bbkushb7#

TS服务器首选项控制排序顺序,ts.OrganizeImports下有许多实用程序来检测和应用这些首选项。

相关问题