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()) {}