typescript/explicit-function-return-type Restriction
What it does
This rule enforces that functions have an explicit return type annotation.
Why is this bad?
Explicit return types make it clearer what type is returned by a function. Making the type returned by a function obvious allows the reader to infer what the function does and how it can be used from a quick glance.
Another benefit of explicit return types is the potential for a speed up of type checking in large codebases with many large functions.
Examples
Examples of incorrect code for this rule:
// Should indicate that no value is returned (void)
function test() {
return;
}
// Should indicate that a number is returned
var fn = function () {
return 1;
};
// Should indicate that a string is returned
var arrowFn = () => "test";
class Test {
// Should indicate that no value is returned (void)
method() {
return;
}
}Examples of correct code for this rule:
// No return value should be expected (void)
function test(): void {
return;
}
// A return value of type number
var fn = function (): number {
return 1;
};
// A return value of type string
var arrowFn = (): string => "test";
class Test {
// No return value should be expected (void)
method(): void {
return;
}
}Configuration
This rule accepts a configuration object with the following properties:
allowConciseArrowFunctionExpressionsStartingWithVoid
type: boolean
default: false
Whether to allow concise arrow functions that start with the void keyword.
allowDirectConstAssertionInArrowFunctions
type: boolean
default: true
Whether to allow arrow functions that use as const assertion on their return value.
allowExpressions
type: boolean
default: false
Whether to allow expressions as function return types. When true, allows functions that immediately return an expression without a return type annotation.
allowFunctionsWithoutTypeParameters
type: boolean
default: false
Whether to allow functions that do not have generic type parameters.
allowHigherOrderFunctions
type: boolean
default: true
Whether to allow higher-order functions (functions that return another function) without return type annotations.
allowIIFEs
type: boolean
default: false
Whether to allow immediately invoked function expressions (IIFEs) without return type annotations.
allowTypedFunctionExpressions
type: boolean
default: true
Whether to allow typed function expressions. When true, allows function expressions that are assigned to a typed variable or parameter.
allowedNames
type: string[]
default: []
Array of function names that are exempt from requiring return type annotations.
How to use
To enable this rule using the config file or in the CLI, you can use:
{
"rules": {
"typescript/explicit-function-return-type": "error"
}
}oxlint --deny typescript/explicit-function-return-type