microsoft / microsoft/TypeScript

[isolatedDeclarations] function expressions as an argument to a function call that is exported are reported as needing an annotation

Ouverte
#62,085 1 commentaire 2 réactions 1 personne assignée Assignée à @Copilot Voir sur GitHub
Domain: flag: isolatedDeclarations Help Wanted Possible Improvement
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.