microsoft / microsoft/TypeScript

JS Intellisense not detecting ES6 Symbol properties assigned after Initialization

Offen
#43,317 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

  • VS Code Version: 1.54.3
  • OS Version: Windows 10 Pro, version 20H2, build 19042.804

Steps to Reproduce:

  1. Initialize a Symbol
  2. Initialize an empty object literal
  3. Assign the object a function, using the symbol as its property

The following code also demonstrates some of the steps to reproduce:

const symKey = Symbol();


/** @namespace */
var objLiteral = {
    literalPublicFn1() {},

    /**
     * You found the secret fn!
     */
    [symKey]() {},
};


/** @namespace */
var objAssigned = {};

/** @memberof objAssigned */
objAssigned.laterPublicFn1 = function() {};

/** 
 * You found the secret fn!
 * @memberof objAssigned 
 * */
objAssigned[symKey] = function () {}

For both objects, the string properties are picked up by Intellisense and autocompleted as expected. However, Intellisense only provides function info for the symbol on the objLiteral object, where the symbol property was declared as part of the literal. For the objAssigned object, where the symbol property was assigned after initialization, no function info is provided.

In other words, intellisense works when calling objLiteral[symKey]() but not when calling objAssigned[symKey]()

Does this issue occur when all extensions are disabled?: Yes

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 JavaScript-Reproduktion im Issue und untersuche die Verarbeitung berechneter Symbol-Eigenschaften, die nach der Objektinitialisierung im TypeScript language-service zugewiesen werden. Vergleiche IntelliSense für objLiteralsymKey mit objAssignedsymKey, und betrachte das Issue als abgeschlossen, wenn beide die für den Literal-Fall angezeigten Funktionsinformationen bereitstellen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, typescript, vscode
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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