Skip to content

Latest commit

 

History

History
108 lines (79 loc) · 2.17 KB

File metadata and controls

108 lines (79 loc) · 2.17 KB

explicit-timer-delay

📝 Enforce or disallow explicit delay argument for setTimeout() and setInterval().

💼 This rule is enabled in the following configs: ✅ recommended, ☑️ unopinionated.

🔧 This rule is automatically fixable by the --fix CLI option.

When using setTimeout() or setInterval(), the delay parameter is optional and defaults to 0. This rule allows you to enforce whether the delay argument should always be explicitly provided or omitted when it's 0.

Examples

// ❌
setTimeout(() => console.log('Hello'));

// ✅
setTimeout(() => console.log('Hello'), 0);
// ❌
setInterval(callback);

// ✅
setInterval(callback, 0);
// ❌
window.setTimeout(() => console.log('Hello'));

// ✅
window.setTimeout(() => console.log('Hello'), 0);
// ❌
globalThis.setInterval(callback);

// ✅
globalThis.setInterval(callback, 0);
// ✅
setTimeout(() => console.log('Hello'), 1000);
setInterval(callback, 100);

Options

Type: string
Default: 'always'

  • 'always' (default)
    • Require explicit delay argument for clarity.
  • 'never'
    • Disallow explicit 0 delay, prefer implicit default. Non-zero delays are still allowed.

'never'

{
	'unicorn/explicit-timer-delay': ['error', 'never']
}
// ❌
setTimeout(() => console.log('Hello'), 0);

// ✅
setTimeout(() => console.log('Hello'));
// ❌
setInterval(callback, 0);

// ✅
setInterval(callback);
// ❌
window.setTimeout(() => console.log('Hello'), 0);

// ✅
window.setTimeout(() => console.log('Hello'));
// ❌
globalThis.setInterval(callback, 0);

// ✅
globalThis.setInterval(callback);
// ✅
setTimeout(() => console.log('Hello'), 1000);
globalThis.setInterval(callback, 100);