We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation .
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
isolatedDeclaration
5.5.0
https://www.typescriptlang.org/play/?isolatedDeclarations=true&ts=5.5.0-dev.20240426#code/KYDwDg9gTgLgBAMwK4DsDGMCWEWIBQCUcA3gL5A
export function f ( ) { }
Function must have an explicit return type annotation with --isolatedDeclarations. (9007)
No error
Functions with no return statements can be easily inferred as type void , so there is no need to give this warning.
void
The text was updated successfully, but these errors were encountered:
This error is intentional; a function without a return may not always be void .
declare function fail ( ) : never ; export function f ( ) { fail ( ) ; } export const g = ( ) => { fail ( ) ; }
Is:
export declare function f ( ) : void ; export declare const g : ( ) => never ;
This can't be determined without type analysis, so is disallowed under isolatedDeclarations .
isolatedDeclarations
Playground Link
Sorry, something went wrong.
Correct error for function expressions, but not function declarations - declarations won't infer never
never
#58331 is indiscriminate in what it affects; if we want to allow this for function declarations only, that may be possible, but it sure seems like an extra inconsistency just to avoid writing : void (and how often do people define a noop function?).
: void
hmm, I didn't think of never , so the function expression part is wrong. But I find it annoying to write : void for obviously clear function declarations.
Discussed and we don't want to make it untenable to, in the future, change the rules around function declaration return type inference. For example, it's maybe preferable that
function dofail ( ) { Debug . fail ( "oops" ) ; }
have an inferred return type of never (as it would if written as a function expression) rather than void .
Successfully merging a pull request may close this issue.