microsoft / microsoft/TypeScript
Auto fixable quick fixes
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
VS Code is investigating the concept of autofixable quick fixes. You can find the current proposal here
Motivating use case
You open the following TS file:
interface IFoo {
bar(): void;
}
class Foo implements IFoo { }
new foo()
This file has two errors: incorrect interface implementation on class Foo and a spelling error in new foo()
You hit F8 to start navigating through errors. While navigating, you can hit a single keyboard shortcut to auto implement the interface or to correct foo -> Foo
Current VS Code proposal
To implement auto fixes, VS Code currently proposes that some quick fixes be marked with a canAutoApply flag. This flag would indicate that:
- The quick fix will fix the underlying problem (and not suppress it or hide it)
- The quick fix can be fairly safely automatically applied without user input
- The provider of the quick fix is relatively confident that the quick fix could be correct (100% confidence is not required since the auto fix is being triggered by a user action). More importantly, the quick fix should be easy to undo if it is incorrect
When the user hits auto fix in VS Code, if only a single canAutoApply quick fix is returned for a diagnostic, VS Code would automatically apply it. If multiple canAutoApply fixes are returned, we would show a list of these for the user to select from. The existing, more complete list of quick fixes and code actions could still be accessed using the lightbulb menu
Proposal for TS
The UX experience of being able to auto fix errors with a single keyboard shortcut is very nice and I think we can make reasonable fix assumptions about a fair number of real world errors. The work that would be required on the TS side to support the proposed auto fix feature in VS Code:
- Add an optional
canAutoApplyproperty on the TSCodeFixobjects - Add some logic to decide when a fix can be marked as
canAutoApply.//@ts-ignorefixes for example should never be marked ascanAutoApplybut spelling errors, add missingthis, and perhaps evenadd missing importcould be.
The initial implementation would only need to support canAutoApply for a small set of diagnostics, which could be expanded in future releases.
/cc @DanielRosenwasser, @minestarks, @amcasey
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue does not name specific files or tests; it identifies TypeScript CodeFix objects and diagnostic handling as the relevant entry points. Start by locating those areas and reviewing the linked VS Code proposal. Done means adding the optional canAutoApply property and initial logic for selected safe fixes, while excluding ts-ignore fixes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100