microsoft / microsoft/TypeScript

【bug】ThisType is invalid when using param on generic object

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

Dieses Issue hat noch niemand übernommen.

Bug Domain: This-Typing Help Wanted
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

Bug Report

🔎 Search Terms

ThisType Object Generic

🕗 Version & Regression Information

I was unable to test this on prior versions because I was not using this feature previously

⏯ Playground Link

Playground link with relevant code

💻 Code
type ILifetime = {
  onShareTimeline: () => string
}

function createObject<D>(obj: D & ILifetime & ThisType<D>) {
  console.warn(obj)
}

// working
createObject({
  title: 'demo',
  onShareTimeline() {
    return ''
  }
})

// not working
createObject({
  title: 'demo',
  onShareTimeline() {
    return this.title
  }
})
🙁 Actual behavior

The generic type is broken

🙂 Expected behavior

The generic type should contain the object properties as those are finally included into the result

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

Beginne mit dem verknüpften TypeScript Playground und dem generischen createObject-Beispiel und vergleiche den funktionierenden Callback mit der Version, die this.title liest. Untersuche, wie ThisType während der kontextuellen Typisierung generischer Objekte angewendet wird; abgeschlossen ist die Untersuchung, wenn der inferierte Objekttyp title enthält und der Callback this.title ohne Fehler zurückgeben kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
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.