microsoft / microsoft/TypeScript

JsDoc with overloads and different generics results in wrong dts output

Offen
#59,980 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

🔎 Search Terms

javascript jsdoc dts overload

🕗 Version & Regression Information
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about jsdoc
⏯ Playground Link

https://www.typescriptlang.org/play/?ts=5.6.2&filetype=js#code/PQKhFgCgAIWgBALgUwLYAcA2BDF0DeAzogE4CWAdgOYC+0AopmshYlLAgPYBuyJmnbABN2ceOmwlsqAo2as6yJqhZsYYkskQBXEhUIEAFAEpoAXgB80bpzJCao4FCigI6hCgw48+AEadOJmwKOjkVVlEuXn5BEXdxSWlZZVVFFIj4zR09A3wTcysbOwd1J0gXMEj4Hj4BYSqJKRl8Cm1UXz40+TUOeCzdfSNTS2tbe0dnSFcGxObggE8u8J6QMuQAD3ROEkRoADNtCgBjRDJOCmhzwyVu03woAEh+vWh8kfwSkqA

💻 Code
/**
 * @template {string} Element
 * @overload
 * @param {Element} element
 * @returns {() => void}
 */

/**
 * @template {boolean} Element
 * @overload
 * @param {Element} element
 * @returns {() => void}
 */

/**
 * @overload
 * @param {number} element
 * @returns {() => void}
 */

/**
 * @param {any} element
 */
export function on(element) {
	return () => {}
}

🙁 Actual behavior

The resulting dts of the given JSDoc looks like this:

export function on<Element extends string>(element: Element): () => void;
export function on<Element extends string>(element: Element): () => void;
export function on(element: number): () => void;

As you can see the generic does extends string both times, but it should be extends boolean the second time

🙂 Expected behavior
export function on<Element extends string>(element: Element): () => void;
export function on<Element extends boolean>(element: Element): () => void;
export function on(element: number): () => void;
Additional information about the issue

No response

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 der verlinkten TypeScript Playground-Reproduktion und untersuche, wie die drei JSDoc-Überladungen in die generierte .d.ts-Ausgabe umgewandelt werden. Überprüfe, dass jede Überladung ihre eigene generische Einschränkung beibehält, insbesondere dass die zweite Überladung extends boolean enthält, und bestätige, dass die Ausgabe mit den erwarteten Deklarationen übereinstimmt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

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