Tôi đang viết chương trình bằng cách sử dụng kiểu chữ và tslint dưới dạng linter. danh sách yêu thích hiện tại của tôi là các quy tắc sau đây (tslint.json):Cách kiểm tra số tham số sai được chuyển đến hàm
{
"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
}
}
Mặc dù tôi đang sử dụng Tslint nó không thành công để bắt một sự kêu gọi đến một hàm với sai số thông số. Ví dụ tôi có chức năng sau:
let displayTimer: Function = function(): void {
document.getElementById('milliseconds').innerHTML = ms.toString();
document.getElementById('seconds').innerHTML = seconds.toString();
document.getElementById('minutes').innerHTML= minutes.toString();
};
Và tôi gọi nó bằng từ bên trong một chức năng như thế này:
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);
};
Như bạn có thể nhìn thấy tôi đi qua một tham số cho hàm displayTimer (trong trường hợp này số 1 nhưng nó có thể là bất cứ điều gì khác) và linter không bắt được điều đó.
tốt, đó là vì nó không phải là javascript không hợp lệ. nó là hoàn toàn hợp lệ để vượt qua các giá trị mà bạn đã không được định nghĩa là các tham số và sau đó lấy chúng trong hàm bằng cách sử dụng các đối số ** **. – toskv
Cảm ơn bạn đã chỉ ra điều này.Tôi đang đến từ nền Java/C# nên tôi muốn có thể kiểm tra loại không phù hợp này.Bất cứ ý tưởng nào? – skiabox
Có lẽ tôi đang thiếu một cái gì đó nhưng có một lý do chức năng không được khai báo là 'function displayTimer(): void {'? Tôi nghĩ TS sẽ tốt hơn để kiểm tra điều đó. Ngay bây giờ tất cả nó đang làm việc cho việc gõ là 'let displayTimer: Function = ???'. Nó không biết liệu tại một số điểm bạn sẽ gán lại null hoặc một số chức năng khác cho nó. – Katana314