我正在編寫一個使用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 = ???'。它不知道在某些時候您是否會重新分配null或其他函數。 – Katana314