microsoft / microsoft/TypeScript

`symbol` does not match interface

Offen
#29,713 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Domain: lib.d.ts
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

TypeScript Version: playground and 3.3

Search Terms: symbol interface

Code

const sym: symbol = Symbol();

function f(arg: { constructor?: unknown }): void {
}

f(sym);

Expected behavior:
symbol is a non-nullish primitive, as such, it should be able to potentially match any interface.

Actual behavior:
Type error.

Playground Link: https://www.typescriptlang.org/play/#src=const%20sym%3A%20symbol%20%3D%20Symbol()%3B%0D%0A%0D%0Afunction%20f(arg%3A%20%7B%20constructor%3F%3A%20unknown%20%7D)%3A%20void%20%7B%0D%0A%7D%0D%0A%0D%0Af(sym)%3B

Related Issues: #29536 (discovered in relation to #28900), #1863, #24587

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 damit, das bereitgestellte Beispiel im verknüpften TypeScript Playground zu reproduzieren, und sieh dir die zugehörigen Issues an, um das beabsichtigte Assignability-Verhalten zu verstehen. Verfolge, wie der Compiler Symbolwerte gegenüber dem Interface { constructor?: unknown } behandelt, füge anschließend einen Regressionstest hinzu und überprüfe, dass das Beispiel typgeprüft wird, ohne andere Typregeln abzuschwächen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
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.