Piszę program używając maszynopisu i tslint jako liniowca. Mój obecny faworyt lista reguł jest następujący (tslint.json):Jak sprawdzić pod kątem złej liczby parametrów przekazanych do funkcji
{
"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
}
}
Chociaż używam Tslint nie udaje się złapać powołanie do funkcji z niewłaściwej liczby parametrów. Na przykład mam następującą funkcję:
let displayTimer: Function = function(): void {
document.getElementById('milliseconds').innerHTML = ms.toString();
document.getElementById('seconds').innerHTML = seconds.toString();
document.getElementById('minutes').innerHTML= minutes.toString();
};
I wzywam go od wewnątrz innej funkcji takich jak to:
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);
};
Jak widać jestem przekazując parametr do funkcji displayTimer (w tym przypadku numer 1, ale może to być cokolwiek innego), a linter tego nie łapie.
cóż, to dlatego, że nie jest nieprawidłowy javascript. jest całkowicie poprawne przekazywanie wartości, które nie zostały zdefiniowane jako parametry, a następnie pobieranie ich w funkcji za pomocą ** argumentów **. – toskv
Dziękuję za wskazanie tego. Pochodzę z tła Java/C#, więc chcę mieć możliwość sprawdzenia tego typu niedopasowania. Jakieś pomysły? – skiabox
Może brakuje mi czegoś, ale czy istnieje powód, dla którego funkcja nie jest zadeklarowana jako 'function displayTimer(): void {?? Myślę, że TS byłby w stanie to sprawdzić. Teraz wszystko, na co się pracuje, to wpisywanie: let displayTimer: Function = ??? '. Nie wie, czy w pewnym momencie zmienisz przydział null lub jakąś inną funkcję do niego. – Katana314