Design Meeting Notes, 2026-09-15

Offen
#64,290 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
20/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Aktiv
Tech-Stack
typescript
Bereich
compilers

Rechercherichtung

Beginne damit, die verknüpften Issues 64192, 62180 und 62181 zu lesen, und sieh dir anschließend die PRs 64172 und 64248 an, um bestehende Ansätze zu prüfen. Die Notizen behandeln mehrere ungelöste Entwürfe für zirkuläre Typinferenz, Overloads, Constraints und das Durchsickern von Typparametern, nennen jedoch keine Dateien, Tests oder ein Abschlusskriterium.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Design Notes

Better Type Inference Self-Referential Values

const Category = z.object({
    get subcategories() {
    //  ~~~~~~~~~~~~~
    // Subcategory implicitly has type 'any' because of circular
    // resolution.
        return z.array(Category);
    }
});
  • Zod and similar libraries are motivation here.
  • While processing the object literal, we normally defer return types for get accessors.
  • But when validating the constraint, we start pulling on those very types.
  • One idea: when we try to resolve a call that is already undergoing resolution, we say "don't check constraints".
  • Why don't we disable constraint checking for all calls and do it in another pass?
    • We're not always interested in just generating an error, we're often trying to grab the constraint for other information (e.g. if there's no candidates, we have to fix to the constraint).
  • How does this affect overloads? Because this would affect how we choose overloads, right?
    • Should not play in?
  • Could we just return the original uninstantiated type parameter from the call when you detect this circularity?
    • How would that work? Isn't that a type parameter leak?
    • Yes, but the idea is there's an "outer" call and an "inner" call. The inner call would leak a type parameter (e.g. T) and the outer call would instantiate it after inference.
    • Scary, but maybe!
  • Outstanding PRs are likely not quite what we're looking for, but may have a PR prototyping these ideas soon.
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.