捕获打字稿语法错误: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-eslint
的 unbound-method
规则。但是,如果您使用 auto-bound arrow-function 方法,此规则将不会捕获任何内容。
如果您遇到从函数返回值的问题,那么 TS 应该主要为您处理。一种确定的方法是通过以下 @typescript-eslint
规则之一为您的函数执行严格的合同:
如果您遇到诸如 if (myClass.doThis) {...}
之类的问题,请参阅此答案中的建议:
我在调试中注意到,我最难找到的愚蠢的拼写错误是这样的结果语句:
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-eslint
的 unbound-method
规则。但是,如果您使用 auto-bound arrow-function 方法,此规则将不会捕获任何内容。
如果您遇到从函数返回值的问题,那么 TS 应该主要为您处理。一种确定的方法是通过以下 @typescript-eslint
规则之一为您的函数执行严格的合同:
如果您遇到诸如 if (myClass.doThis) {...}
之类的问题,请参阅此答案中的建议: