Return types fail to emit for methods of anonymous plain objects

Offen
#52,415 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
typescript
Bereich
compilers

Rechercherichtung

Beginne mit dem verlinkten TypeScript Playground und dem Beispiel im Issue und untersuche anschließend, wie declaration emit das anonyme Objekt behandelt, das von test() zurückgegeben wird. Bestimme ein definiertes Ergebnis für den this-Typ, einen erweiterten anonymen Typ oder eine Diagnose, und verifiziere, dass die generierte .d.ts korrekt ist, ohne Portabilitäts- oder Zirkularitätsprobleme einzuführen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Needs Proposal Suggestion

Bug Report

🔎 Search Terms

declaration emit this any

🕗 Version & Regression Information
  • This is the behavior in every version I tried
⏯ Playground Link

Playground link with relevant code

💻 Code
export function test() {
  return {
    relyingOnThis() {
      return this;
    },
  };
}

// seen and recognized locally in TS files
test().relyingOnThis();
🙁 Actual behavior
// generated .d.ts
export declare function test(): {
    relyingOnThis(): any;
};
🙂 Expected behavior

Make this type to work in such contexts and emit that:

declare function test(): {
    relyingOnThis(): this; // currently reports `A 'this' type is available only in a non-static member of a class or interface.(2526)`
};

Or emit the content of the anonymous type there somehow (when possible, be cautious with circularities, generics etc):

declare const _type: {
    relyingOnThis(): typeof _type;
}

declare function test(): typeof _type

Or just emit a diagnostic that this isn't portable and that an explicit annotation is needed.

Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/TypeScript

Alle Issues in microsoft/TypeScript

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

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