Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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
Javascript 检查函数值而不是返回值时显示警告_Javascript_Typescript_Visual Studio Code - Fatal编程技术网

Javascript 检查函数值而不是返回值时显示警告

Javascript 检查函数值而不是返回值时显示警告,javascript,typescript,visual-studio-code,Javascript,Typescript,Visual Studio Code,当我试图测试函数返回值时,我经常被绊倒(通常是因为自动完成)。有时我忘记在它的末尾添加(),所以它总是返回true class Foo { public bar(): boolean { // return either true or false based on some logic } } 使用前者时,是否有任何方式得到通知/警告?在调试时,我并不是总能发现我错过了函数调用,并且很难找出问题所在。或者,是否有更好的方法编写代码来避免此问题 我使用的是VS代

当我试图测试函数返回值时,我经常被绊倒(通常是因为自动完成)。有时我忘记在它的末尾添加
()
,所以它总是返回true

class Foo {
    public bar(): boolean {
        // return either true or false based on some logic
    }
}
使用前者时,是否有任何方式得到通知/警告?在调试时,我并不是总能发现我错过了函数调用,并且很难找出问题所在。或者,是否有更好的方法编写代码来避免此问题


我使用的是VS代码,因此我愿意接受任何可能有助于警告我此问题的linting。

有几件事我可以想到。首先,你可以试着用一根短绒。TSLint有一个名为
严格布尔表达式
的选项,我认为它可以满足您的需要。其次,您可以将这样的方法转换为getter。

如果将
bar
用作属性getter是有意义的,那么将其转换为属性getter可能是有意义的。这样做可以为Typescript提供指出错误用法所需的信息

找到一个符合您需要的TSLint标志可能会很尴尬,。正如执行
if(obj.someFunction){
是完全有效的,并且在Javascript中大量使用它来测试函数调用

要成为一家房地产公司并不难

例如


你可以把
bar
变成一个属性getter。有没有办法把TSLint规则只应用于函数呢?根据,似乎不是这样。
let foo = new Foo();
if (foo.bar) {
    // UNINTENDED
    // always returns true due to "foo.bar" being a function object
}

if (foo.bar()) {
    // INTENDED
    // may return true or false depending on logic of "foo.bar"
}

class test {
    get bar(): boolean {
        return true;
    }
}

var a = new test();

//This is OK.
if (a.bar) {}

//ERROR: Cannot invoke an expression whose type lacks a 
//call signature.
if (a.bar()) {}