私はtypescriptとtslintをlinterとして使ってプログラムを書いています。 ルールの私の現在のお気に入りのリストには、以下の(tslint.json)です:関数に渡されるパラメータの数が間違っているかどうかをチェックする方法
{
"extends": "tslint:recommended",
"rules": {
"comment-format": [false, "check-space"],
"eofline": false,
"triple-equals": [false, "allow-null-check"],
"no-trailing-whitespace": false,
"one-line": false,
"no-empty": false,
"typedef-whitespace": false,
"whitespace": false,
"radix": false,
"no-consecutive-blank-lines": false,
"no-console": false,
"typedef": [true,
"variable-declaration",
"call-signature",
"parameter",
"property-declaration",
"member-variable-declaration"
],
"quotemark": false,
"no-any": true,
"one-variable-per-declaration": false
}
}
私はTslintを使用しておりますが、それはパラメータの数が間違って関数に呼び出しをキャッチするために失敗しました。たとえば 私は、次の機能があります。
let displayTimer: Function = function(): void {
document.getElementById('milliseconds').innerHTML = ms.toString();
document.getElementById('seconds').innerHTML = seconds.toString();
document.getElementById('minutes').innerHTML= minutes.toString();
};
として、私はそれを呼び出していますが、このような別の関数の中から:
let turnTimerOn: Function = function(): void {
ms += interval;
if (ms >= 1000)
{
ms = 0;
seconds += 1;
}
if (seconds >= 60)
{
ms = 0;
seconds = 0;
minutes += 1;
}
displayTimer(1);
};
私は(displayTimer関数にパラメータを渡す午前見ることができるようにこの場合数字は1ですが、それ以外のものでも可能です)、リンターはそれを捕まえていません。
これは、無効なJavaScriptではないためです。パラメータとして定義されていない値を渡し、**引数**を使用して関数内で値を取得することは完全に有効です。 – toskv
これを指摘してくれてありがとう。私はJava/C#の背景から来ているので、このタイプの不一致をチェックできるようにしたいと思います。 – skiabox
たぶん私は何かが欠けているかもしれませんが、関数が 'function displayTimer()として宣言されていない理由があります:void {'?私はTSがそれを確認できるほうがいいと思う。今すぐ入力しようとしているのは 'let displayTimer:Function = ???'です。ある時点で、ヌルや他の関数をそれに再割り当てするかどうかはわかりません。 – Katana314