microsoft / microsoft/TypeScript
[isolatedDeclarations] function expressions as an argument to a function call that is exported are reported as needing an annotation
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- PR merge metrics
- PR metrics pending
Description
### 🔎 Search Terms
"isolatedDeclarations", "function return type", "exported variable"
### 🕗 Version & Regression Information
- This changed between versions 5.6.3 and 5.7.3
### ⏯ Playground Link
https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcA5FDvmQNwBQokscA3ivsBAHZwC+cREuRAQARgA9aDcNHhsxqLFABuSvgOKkyIiQFpKeGFLpZxTeLm6p4AYRKQuWLvAC8cBUtVQAFN4CUcC4AfKx0cHCUMACuUDwAPEFxAPRB9Lx+9CZmsnCWXNZwMAAWwFwA5oHsMJxc3gRRXBzccP6h4ZExPHYyjs5pGXRAA
### 💻 Code
```ts
import * as React from 'react';
import { action } from 'mobx';
import { observer } from 'mobx-react';
export const Component = observer(() => {
return <>;
});
export const thing = action(function () {
return Component;
});
```
### 🙁 Actual behavior
```ts
import * as React from 'react';
import { action } from 'mobx';
import { observer } from 'mobx-react';
export const Component = observer(() => {
~~~~~~~~~ Variable must have an explicit type annotation with --isolatedDeclarations.
~~~~~ Function must have an explicit return type annotation with --isolatedDeclarations.
return <>;
});
export const thing = action(function () {
~~~~~ Variable must have an explicit type annotation with --isolatedDeclarations.
~~~~~~~~ Function must have an explicit return type annotation with --isolatedDeclarations.
return Component;
});
```
### 🙂 Expected behavior
```ts
import * as React from 'react';
import { action } from 'mobx';
import { observer } from 'mobx-react';
export const Component = observer(() => {
~~~~~~~~~ Variable must have an explicit type annotation with --isolatedDeclarations.
return <>;
});
export const thing = action(function () {
~~~~~ Variable must have an explicit type annotation with --isolatedDeclarations.
return Component;
});
```
### Additional information about the issue
The function expressions are not directly exported so they should not be reported on at all.
This is causing `ts-fix` to insert many unnecessary annotations when codemodding the codebase at Canva because there's no way for it to tell that annotating the variable will silence the error on the function -- so it adds both annotations.
Contributor guide
Assessment
This issue has not been assessed yet.