microsoft / microsoft/TypeScript

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

Open
#62,085 1 comment 2 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

Domain: flag: isolatedDeclarations Help Wanted Possible Improvement
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.