Uncalled function checks
https://code.visualstudio.com/updates/v1_41#_uncalled-function-checks
if文の条件のカッコの中で、例えば下の例のようにオブジェクトのプロパティを評価しているつもりで書いた場合、
import * as fs from 'fs';
fs.stat('./index.ts', function(err, stats) {
if (stats.isDirectory) {
handleDirectory(stats);
} else {
console.log('Not a directory');
}
});
function handleDirectory(stats: fs.Stats) {
console.log(stats);
}
fs.stat('./index.ts', function(err, stats) {
if (stats.isDirectory) {
handleDirectory(stats);
} else {
console.log('Not a directory');
}
});
function handleDirectory(stats: fs.Stats) {
console.log(stats);
}
下のように「stats.isDirecroty」の下に波線が出て問題があることを示してくれるようになったそうです。
この例では、stats.isDirectory というのはプロパティではなく関数なので、stats.isDirectory() と書かなければ正しく動きません。
isDirectoryの後の「()」を忘れると、関数の戻り値ではなく関数そのものが評価されてしまうため、この例では常にif文の中の処理が実行されることになってしまいます。
もしプログラマが「stats.isDirectoryはboolean型のプロパティだ」と思い込んでしまっていたら、今までならこのようなバグにすぐに気付くことは難しかったのではないかと思います。
かなり細かい変更点ですが、良い改善だと思います。