microsoft / microsoft/TypeScript

Add extract to parameter refactoring for JS/TS in vscode

Open
#37,191 1 comment 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Awaiting More Feedback Domain: LS: Refactorings Suggestion
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
132

Description

Search Terms

Suggestion

Add a refactoring to extract to parameter for JS/TS

e.g.

for


const fangler = () => {
  return {
    someProperty: [
      "a", "b"
    ]
  }
}

the extract to parameter refactoring would change to


const fangler = (secondItem) => {
  return {
    someProperty: [
      "a", secondItem
    ]
  }
}

and populate each existing call site with the extracted value (in this example "b")

Use Cases

It is a common refactoring when you discover that a previously fixed value should instead be provided by a caller

Examples

e.g. in the case where I went looking for it code in a Lambda function that created a fixed header had to start providing a varying value depending on context and the easiest refactoring was to extract the currently fixed value as a parameter so that the callers that would vary it could do without breaking other callers

see https://twitter.com/mattbierner/status/1234920525543002113

Checklist

My suggestion meets these guidelines:

  • This wouldn't be a breaking change in existing TypeScript/JavaScript code
  • This wouldn't change the runtime behavior of existing JavaScript code
  • This could be implemented without emitting different JS based on the types of the expressions
  • This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
  • This feature would agree with the rest of TypeScript's Design Goals.

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.

Research direction

Start by reviewing the existing JavaScript/TypeScript refactoring support in the VS Code integration and the example behavior described in the issue. Define how an extracted expression becomes a parameter and how every existing call site receives the original value; done means the refactoring works for both JS and TS without changing unrelated runtime behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
developer-experience, devtools
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.