src/content/docs/linter/rules/use-iterable-callback-return.mdx
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs> <TabItem label="JavaScript (and super languages)" icon="seti:javascript"> ## Summary - Rule available since: `v2.0.0` - Diagnostic Category: [`lint/suspicious/useIterableCallbackReturn`](/reference/diagnostics#diagnostic-category) - This rule is **recommended**, meaning it is enabled by default. - This rule doesn't have a fix. - The default severity of this rule is [**error**](/reference/diagnostics#error). - Sources: - Same as [`array-callback-return`](https://eslint.org/docs/latest/rules/array-callback-return){
"linter": {
"rules": {
"suspicious": {
"useIterableCallbackReturn": "error"
}
}
}
}
Enforce consistent return values in iterable callbacks.
This rule ensures that callbacks passed to certain iterable methods either always return a value or never return a value, depending on the method's requirements.
Note that async and generator callbacks are ignored as they always return Promise or
Generator respectively.
The following methods require a return in their callback:
everyfilterfindfindIndexfindLastfindLastIndexflatMapmapreducereduceRightsomesorttoSorted
— from (when called on Array)A return value is disallowed in the method forEach.
[].map(() => {
// Missing return value
});
[].forEach(() => {
// No return value, which is correct
});
[].filter(() => {
// Missing required return value
});
[].map(() => {
return 1; // Correctly returns a value
});
[].forEach(() => void null); // Void return value, which doesn't trigger the rule
checkForEachSince `v2.4.0
Default: true
When set to false, the rule will skip forEach callbacks that return a value.
{
"linter": {
"rules": {
"suspicious": {
"useIterableCallbackReturn": {
"options": {
"checkForEach": false
}
}
}
}
}
}
[1, 2, 3].forEach((el) => {
return el * 2;
});
When checkForEach is false (default), the above code will not trigger any diagnostic.