Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
捕获typescript语法错误:if语句和类方法调用_Typescript_Visual Studio Code_Tslint_Typescript Eslint - Fatal编程技术网

捕获typescript语法错误:if语句和类方法调用

捕获typescript语法错误:if语句和类方法调用,typescript,visual-studio-code,tslint,typescript-eslint,Typescript,Visual Studio Code,Tslint,Typescript Eslint,我在调试过程中注意到,我最难发现的愚蠢打字错误如下: if (id = userId) {..} And for class methods: let result = myClass.doThis; 由于某些原因,VSCode在编译时不会将这些标记为潜在问题。是否有设置或工具可以警告我此类错误?有时,它们很难找到,我花了很多时间去寻找,因为它们在扫描时并不明显,很难找到 我知道这些是合法的typescript语句,但在其他一些语言中,UI会在条件和方法中标记赋值,并将其称为属性,以确保这

我在调试过程中注意到,我最难发现的愚蠢打字错误如下:

if (id = userId) {..}

And for class methods:

let result = myClass.doThis;
由于某些原因,VSCode在编译时不会将这些标记为潜在问题。是否有设置或工具可以警告我此类错误?有时,它们很难找到,我花了很多时间去寻找,因为它们在扫描时并不明显,很难找到


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

以下是@aluan haddad的评论

ESLint有一个规则来防止您的第一个问题(
if(id=userId){…}
):

您的第二个问题(
let result=myClass.doThis;
)如果没有更多信息,很难说最好的lint规则。 这段代码本身并没有什么问题——您已经为一个变量分配了(我假设是)一个函数

捕获此信息的一个选项可能是
@typescript eslint
中的规则。但是,如果使用自动绑定箭头函数方法,则此规则将不会捕获任何内容

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


如果您遇到类似
If(myClass.doThis){…}
之类的问题,请参阅以下答案中的建议:

使用过梁。随着tslint现在贬值,带有typescript插件的eslint是未来的发展方向。他们会抓住这个机会的。然而,您的第二个示例是完全有效和合理的代码,所以我不认为有任何理由标记它。如果类方法不接受任何参数,并且是同步的,那么考虑将它作为一个属性辅助项,想知道在一个变量内保存一个类方法是多么有用,就像在让结果= MyCase.doTHE中那样;什么时候有用?如果“doThis”是一个依赖于类的任何其他属性的方法,那么如果没有适当的实例“this”上下文,调用result()将不会有多大用处,但是,请考虑<>代码>对象>成员< /> > >代码>对象< /代码>。我几乎从不使用
这个
,除非框架迫使我这样做。无论如何,现在的Linter是高度可定制的,我相信已经有人编写了这样的规则,但是我想除了推荐一个工具之外,我还会给你我的意见,因为。。。我们在谈论林特:}谢谢。实际上让ESLint工作有困难,但我会继续摆弄。