microsoft / microsoft/TypeScript

`extends ArrayBufferLike` works for own package; but causes errors for downstream users

Offen
#35,172 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Needs Proposal Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

TypeScript Version: 3.5.1

Search Terms:

  • extends ArrayBufferLike
  • TS2312
  • An interface can only extend an object type or intersection of object types with statically known members.

Code

Repro,
https://github.com/AnyhowStep/ts-issue-35172

The line of code that introduced the problem,
https://github.com/AnyhowStep/type-mapping/commit/cb420b8e14dda4de5bf017bcc4a3ab3f35e71de5#diff-f84343d86daf9a112cfa32bdb89c7cdaR2

The following is safe to use on own package and downstream packages,

interface Buffer {
    ___doesNotExist? : any;
}

The following causes downstream packages to break,

interface Buffer extends ArrayBufferLike {
    ___doesNotExist? : any;
}

Expected behavior:

Option A:

  • Should crash for own package
  • Should crash for downstream packages

Option B:

  • Should not crash for own package
  • Should not crash for downstream packages

Actual behavior:

  • Does not crash for own package
  • Crashes for downstream packages

Playground Link:

None.

But I have repro steps,

https://github.com/AnyhowStep/ts-issue-35172

Related Issues:

None that I could find.

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 AnyhowStep/ts-issue-35172-Reproduktion und vergleiche die beiden Buffer-Deklarationen im Issue, einschließlich des referenzierten type-mapping-Commits. Bestätige den Fehler im Downstream-Package und ermittle, ob der Compiler die Deklaration konsistent ablehnen oder konsistent akzeptieren sollte; abgeschlossen ist die Aufgabe, wenn das gewählte Verhalten reproduziert und durch einen geeigneten Regressionstest abgedeckt ist.

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
30/100

Neue Issues direkt in Ihr Postfach

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