Eslint 中是否有任何解决方法/解决方案可以让 TypeScript 在泛型类/方法中获取空格

Xav*_*zus 7 generics types typescript eslint

当您想要将类型设置为通用方法/类时,我试图让 Typescript ESLint 检测尖括号之间是否没有空格。主要目标是在缺少空格时收到警告/错误。自动修复真是太好了。

例如,这是错误的代码:

class MyGenricClass<T> {
   MyGenericProperty: T;
   MyHttpResponse: <HttpResponse<T>>;
}

const InstancedClass = new MyGenricClass<string>();
Run Code Online (Sandbox Code Playgroud)

我希望泛型类型在尖括号内有空格,如下所示:

class MyGenricClass< T > {
   MyGenericProperty: T;
   MyHttpResponse: < HttpResponse< T > >;
}

const InstancedClass = new MyGenricClass< string >();
Run Code Online (Sandbox Code Playgroud)

我检查了以下内容,可以在 TypeScript-Eslint 文档中找到:

  • @typescript-eslint/func-call-spacing - 仅在函数调用之前添加空格
  • @typescript-eslint/type-annotation-spacing - 适用于let foo: string = "bar";尖括号,但不适用于
  • @typescript-eslint/space-before-function-paren - 感觉与 func-call-spacing 相同

我也尝试过谷歌和duckduckgo,但没有成功。我所做的搜索是:

  • typescript eslint 泛型之间的空格
  • typescript eslint 通用间距
  • typescript eslint 模板间距
  • typescript eslint 通用类型间距
  • typescript eslint 类型注释间距

老实说,我不确定我想要实现的目标的正确命名是什么。因此,我希望得到一些建议,我可以在其中寻找解决方案或可能的解决方法。最坏的情况是自己编写此规则,并向 @typescript-eslint 创建 PR。

提前谢谢了!

小智 4

好家伙。这很粗糙。

首先,我也不知道他们叫什么。它们是泛型 所以,我自己做了一些谷歌搜索。遇到了同样的问题。 @typescript-eslint 中的文档keyword-spacing指出“此版本添加了对函数调用上的泛型类型参数的支持。”。但是,怎么样?所以我深入研究了源代码,因为要弄清楚。没有骰子。

然后,我检查问题。 这就是我找到这个的地方

该死的。


所以搜索仍在继续。深入研究一些 pull 后发现了func-call-spacing,在泛型方面声称与上一个相同。

我们只能说它也没有成功。


所以,我的结论是它不会在主 @typescript-eslint 中实现,但你可能可以编写一个扩展