ski*_*box 8 javascript typescript tslint
我正在使用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
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我使用的是Tslint但它无法捕获一个参数数量错误的函数.例如,我有以下功能:
let displayTimer: Function = function(): void {
document.getElementById('milliseconds').innerHTML = ms.toString();
document.getElementById('seconds').innerHTML = seconds.toString();
document.getElementById('minutes').innerHTML= minutes.toString();
};
Run Code Online (Sandbox Code Playgroud)
而我正在从另一个函数中调用它,如下所示:
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);
};
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将一个参数传递给displayTimer函数(在本例中为数字1但它可能是其他任何东西)并且linter没有捕获它.
只需删除类型Function
,TypeScript将检查签名:
let displayTimer = function(): void {
// ...
};
displayTimer(1); // Error: Supplied parameters does not match any signature of call target
Run Code Online (Sandbox Code Playgroud)
推断类型displayTimer
不是Function
(它接受任何签名)但是() => void
.
请参阅PlayGround中的代码.
归档时间: |
|
查看次数: |
377 次 |
最近记录: |