Ich schreibe ein Programm mit typescript und tslint als linter. Meine aktuellen Favoriten Liste der Regeln ist die folgende (tslint.json):So überprüfen Sie die falsche Anzahl von Parametern, die an eine Funktion übergeben werden
{
"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
}
}
Obwohl ich Tslint bin mit versagt es eine Berufung auf eine Funktion, mit der falschen Anzahl von Parametern zu fangen. Zum Beispiel habe ich die folgende Funktion:
let displayTimer: Function = function(): void {
document.getElementById('milliseconds').innerHTML = ms.toString();
document.getElementById('seconds').innerHTML = seconds.toString();
document.getElementById('minutes').innerHTML= minutes.toString();
};
Und ich es nenne, wie diese in einer anderen Funktion mit aus:
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);
};
Wie man sehen kann ich einen Parameter an die displayTimer Funktion am Übergang (in diesem Fall die Nummer 1, aber es könnte alles andere sein) und der Linter fängt das nicht ein.
gut, das ist, weil es nicht ungültig JavaScript ist. Es ist durchaus zulässig, Werte, die Sie nicht als Parameter definiert haben, weiterzuleiten und später in der Funktion mit den ** Argumenten ** wiederzufinden. – toskv
Vielen Dank, dass Sie darauf hingewiesen haben. Ich komme aus einem Java/C# -Hintergrund, also möchte ich in der Lage sein, nach dieser Art von Mismatch zu suchen. Irgendwelche Ideen? – skiabox
Vielleicht vermisse ich etwas, aber gibt es einen Grund, warum die Funktion nicht als 'function displayTimer(): void {'? Ich denke TS wäre besser in der Lage das zu überprüfen. Im Moment läuft alles, um zu tippen, "let displayTimer: Function = ???". Es weiß nicht, ob Sie irgendwann Null oder eine andere Funktion zuweisen werden. – Katana314