microsoft / microsoft/TypeScript

Encapsulate type refactoring

Offen
#31,573 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Domain: LS: Refactorings Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

Search Terms

  • refactoring
  • encapsulate
  • return, function

Suggestion

Add a refactoring that encapsulates a given instance of a type and updates uses of it. Encapsulating would wrap the type in an object type that has a single property of that type.

Use cases

My original use case would be to convert a single returned type to an object that can return multiple values:

  1. Start
    function foo(): number { return Date.now(); }
    const z = foo(); 
    
  2. Select number and run encapsulate
  3. Result
    function foo(): { value: number } { return { value: Date.now() }; }
    const z = foo().value; 
    

This could also be used for individual parameters in a function:

  1. Start
    function foo(x: number) { return x * 2; }
    foo(1);
    
  2. Select number and run encapsulate
  3. Result
    function foo(x: { value: number }) { return x.value * 2; }
    foo({ value: 1 });
    

This may fall under some larger class of refactoring, I'm just not sure what to call it

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Das Issue nennt keine Dateien oder Tests; verwende die Beispiele für Rückgabetyp und Parameter von foo als Abnahmekriterien. Untersuche zuerst die vorhandenen Einstiegspunkte und Tests für Refactorings im Repository. Erledigt ist die Aufgabe, wenn eine Encapsulate-Aktion sowohl einen ausgewählten Rückgabetyp als auch einen Funktionsparameter transformiert und die gezeigten Aufrufstellen aktualisiert, sodass sie die resultierende Form { value: ... } verwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.