捕获打字稿语法错误:if 语句和 class 方法调用

Catching typescript syntax errors: if statements and class method calls

我在调试中注意到,我最难找到的愚蠢的拼写错误是这样的结果语句:

if (id = userId) {..}

And for class methods:

let result = myClass.doThis;

出于某种原因 VSCode 没有在编译时将这些标记为潜在问题。是否有设置或工具可以警告我此类错误?有时它们很难找到并且花费了我很多时间来追踪它们,因为它们在您扫描时并不那么明显并且难以搜索。

我知道这些是合法的打字稿语句,但其他一些语言的 UI 会在条件和方法中标记赋值,称为属性,以确保这确实是您想要做的。

来自@aluan-haddad 的评论。

ESLint 有一条规则可以防止您的第一个问题 (if (id = userId) {...}): no-cond-assign.

你的第二个问题 (let result = myClass.doThis;) 如果没有更多信息,很难说出最好的 lint 规则来捕获它。 该代码本身没有任何问题 - 您已经将(我假设的)函数分配给变量。

捕捉此 的一个选项可能 是来自 @typescript-eslintunbound-method 规则。但是,如果您使用 auto-bound arrow-function 方法,此规则将不会捕获任何内容。

如果您遇到从函数返回值的问题,那么 TS 应该主要为您处理。一种确定的方法是通过以下 @typescript-eslint 规则之一为您的函数执行严格的合同:

如果您遇到诸如 if (myClass.doThis) {...} 之类的问题,请参阅此答案中的建议: