Typescript: Bitte geben Sie die automatische Vervollständigung für an<reference>und Pfade importieren</reference>

Erstellt am 22. Juli 2014  ·  36Kommentare  ·  Quelle: microsoft/TypeScript

Hallo,

Visual Studio (2013 Ultimate) bietet Intellisense für das src-Attribut für Skriptelemente, indem das Dateisystem gelesen und verfügbare Dateien oder Ordner angezeigt werden.

Image

Es ist sehr nützlich, wenn ähnliche Funktionen für <reference> und Importanweisungen bereitgestellt werden können:


 <reference path="foo/    <--- here

import foo = require('foo/   <--- and here

API Moderate Suggestion Visual Studio help wanted

Hilfreichster Kommentar

Dies ist bei weitem meine größte Zeitverschwendung bei der Arbeit mit Typoskript. Wenn mein Klassenname automatisch vervollständigt werden kann, sollte er sicherstellen können, dass eine Importanweisung dafür vorhanden ist. Am Ende nehme ich eine fundierte Vermutung über den Pfad an und füge dann "../" hinzu und warte darauf, ob das rote Swiggly verschwindet und wiederhole, bis es es tut.

Es wäre auch schön, "Importe optimieren" zu können und nicht verwendete Importe automatisch zu entfernen.

Alle 36 Kommentare

: +1:

@NoelAbrahams btw

image

@ Basarat , interessant. Nie Resharper verwendet und glaube nicht, dass sich das ändern wird. Für Anti-Drittanbieter-Tool-Leute wie mich hoffe ich, dass dies in das VS-Plugin aufgenommen wird. :Lächeln:

: +1:

@NoelAbrahams btw atom-typescript vervollständigt Ihre Referenzen: https://github.com/TypeStrong/atom-typescript#relative -paths

und sogar das externe Modul "name" und "./path"s: rose: automatisch vervollständigen:

Ich weiß nicht, ob @ ahmad-farid tatsächlich die Chance bekommen hat, damit zu beginnen, aber @basarat , ist diese Funktionalität etwas, von dem Sie glauben, dass Sie möglicherweise zu TypeScript selbst beitragen könnten, oder ist sie enger an Atom-Typoskript gekoppelt?

ist es enger an Atom-Typoskript gekoppelt

Eng gekoppelt darin, dass ich eine schlechte Tokenisierung mache, um diese zu erkennen:
https://github.com/TypeStrong/atom-typescript/blob/d5fb4707b989f15d3be8d57cfa28d88af50b4702/lib/main/atom/typescriptGrammar.ts#L68 -L76

Der Code, um diese Ergebnisse zu erhalten, ist etwas einfacher

Muss nicht eng gekoppelt sein. Aber genau so habe ich es als TypeScript-Konsument geschrieben und es kann keine PR zum Kopieren und Einfügen geben.

Wenn jemand dies PR machen würde, würde er das _am I in einem Referenzkommentar / einer Importzeichenfolge? _ Erkennung auf getCompletionInfo und dann dort nachschlagen.

Weitere mögliche Rahmen: https://github.com/Microsoft/TypeScript/pull/2173#issuecomment -89347414

Kannst du nicht ziehen und ablegen fürdas scheint viel einfacher.

Für die automatische Vervollständigung des Imports würde ich vorschlagen, eine andere Funktion wie "Importreferenz kopieren" im Lösungs-Explorer mit der rechten Maustaste auf die Datei zu klicken und diese dann in eine Datei einzufügen, die wie folgt lautet: "import fileName = require (" ../ dir / filename ");". Dies sollte die relativen Pfade und das Dateinamengehäuse verfolgen.

Wenn mich jemand anleiten kann, wo ich in dieser Quelle danach suchen soll, kann ich versuchen, etwas hinzuzufügen.

Der Visual Studio-bezogene Code, den Sie ändern müssten, um solche Änderungen vorzunehmen, ist derzeit nicht Open Source.

Wir hatten tatsächlich irgendwann eine /// Referenzgenerierung per Drag & Drop, aber sie ist höchst unentdeckbar und lässt sich nicht sehr gut skalieren (möchten Sie wirklich mehr als 5 Elemente aus unterschiedlichen Teilen Ihrer Lösung in Ordner ziehen und ablegen, die möglicherweise geschlossen sind? Lösungsforscher?).

In jedem Fall wären diese Arten von Interaktionen nett, aber es sollte auch einfacher sein, sie in einem auf die Tastatur ausgerichteten Workflow durchzuführen, bei dem die automatische Vervollständigung hilfreich wäre.

Wir haben so viele Module, dass das Durchlaufen des Dateisystems nicht praktikabel ist, und einige von ihnen sind externe Modulnamen, keine Dateien. Daher möchten wir eine regelmäßige Indizierung durchführen und dann den Sprachdiensten eine Liste davon bereitstellen (z. B. einen RPC oder eine Datei, die wir auf einer lokalen Festplatte bereitstellen usw.).

+1 mit automatischer Vervollständigung beim Import wird fantastisch sein.

Es gibt immer noch viele Anfragen dafür, zumal dies jetzt bei VSCode und Salsa effektiv eine Regression ist (dh sie haben früher Vervollständigungen für require für Module angegeben). Ich glaube, einige Nicht-Microsoft-Editoren unterstützen dies bereits in TypeScript / JavaScript. Wir sollten darüber nachdenken , dies zu @mhegazy ).

Ehrlich gesagt ist dies der einzige Grund, warum ich weiterhin Webstorm verwenden muss, das benutzerdefinierte Handler für automatische Vervollständigungen von Importen und Referenzen erstellt hat. Und das nicht nur automatisch, sondern auch automatisch.

Wir haben ungefähr 25.000 Zeilen Typescript atm und es wäre wirklich schön, wenn diese Funktion eingeschoben werden könnte, damit alle anderen IDEs sie übernehmen können.

Wir brauchen auch diese Funktion. Dies ist einer der größten Nachteile einer Java-Welt, in der ein Refactoring problemlos mit Eclipse oder Intellij durchgeführt werden kann.

Ich möchte mich hier einschalten, obwohl die automatische Importabwicklung sehr hilfreich und angenehm ist, möchte ich darauf hinweisen, dass diese Funktion einer der Gründe dafür ist, dass der Websturm nicht optimal ist. Das kontinuierliche Scannen von node_modules erzeugt einen erheblichen Speicher- und Verarbeitungsaufwand, der den VSCode meiner Meinung nach erheblich verlangsamen würde.

Kurz gesagt - ich würde diese Funktion lieben, aber nicht auf Kosten der unglaublichen Geschwindigkeit von VSCode. Als leichtgewichtiger Editor erwarte ich Geschwindigkeit, Leistung und Flexibilität auf Kosten der Bequemlichkeit. Eine langsame IDE hat höhere Gesamtbetriebskosten, da sie ständig tuckert und Verzögerungen verursacht, bei denen Sie mit einem leichteren Editor kontinuierlich und ohne Unterbrechung durchbrennen können.

@mikepc curiou, ob Sie andere Implementierungen wie https://packagecontrol.io/packages/AutoFileName verwendet haben und wie Sie die Leistung für die Projekte finden, mit denen WebStorm zu kämpfen hat.

Ich denke, dass Sie einen ausgeklügelten Algorithmus für den Abschluss des Imports haben können, der nicht unter den von Ihnen beschriebenen Leistungsproblemen leidet. Eine Optimierung wäre, das Ausschlussfeld in der tsconfig zu verwenden, um Dateien und Ordner vom Autocompletion-Index auszuschließen. Jetzt werden nur Projektdateipfade automatisch vervollständigt. Wenn jemand ein Modul aus einer Abhängigkeit importiert, weiß Typoskript, wo sich diese Abhängigkeit befindet. Der Ordner der importierten Abhängigkeit wird also auch in den Index aufgenommen. Das Entfernen könnte über Referenzzähler für jedes Abhängigkeitsmodul verwaltet werden.

Ich habe keine Kenntnis über das Innenleben der verschiedenen Methoden von
Paketdurchquerung, und wenn es tatsächlich möglich ist, es nur mit a aufzunehmen
kleiner Performance-Hit Ich würde es sehr lieben, wenn es hinzugefügt würde. ich genieße
mit VSCode. Ich möchte es einfach weiterhin genießen.

Am Montag, den 18. April 2016 um 12:37 Uhr hat Frederik Schubert <
[email protected]> schrieb:

Ich denke, dass Sie einen ausgeklügelten Algorithmus für den Abschluss des Imports haben können
das leidet nicht unter den von Ihnen beschriebenen Leistungsproblemen. Ein
Die Optimierung würde darin bestehen, das Ausschlussfeld in der tsconfig zum Ausschließen zu verwenden
Dateien und Ordner aus dem Autocompletion-Index. Jetzt nur noch Projektdatei
Pfade werden automatisch vervollständigt. Wenn jemand ein Modul aus einer Abhängigkeit importiert, dann
Typoskript weiß, wo sich diese Abhängigkeit befindet. Also der Ordner der
Importierte Abhängigkeiten werden ebenfalls in den Index aufgenommen. Die Entfernung könnte sein
verwaltet über Referenzzähler für jedes Abhängigkeitsmodul.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail oder sieh sie dir auf GitHub an
https://github.com/Microsoft/TypeScript/issues/188#issuecomment -211543527

Nach dem Lesen dieses Themas bin ich mir immer noch nicht sicher, ob dies in VS Code implementiert wird. Es ist nur ärgerlich, dies alles jedes Mal manuell zu tun.

Dies ist bei weitem meine größte Zeitverschwendung bei der Arbeit mit Typoskript. Wenn mein Klassenname automatisch vervollständigt werden kann, sollte er sicherstellen können, dass eine Importanweisung dafür vorhanden ist. Am Ende nehme ich eine fundierte Vermutung über den Pfad an und füge dann "../" hinzu und warte darauf, ob das rote Swiggly verschwindet und wiederhole, bis es es tut.

Es wäre auch schön, "Importe optimieren" zu können und nicht verwendete Importe automatisch zu entfernen.

Ja bitte, das ist so ein Schmerz der Arsch.

Gibt es Neuigkeiten zu diesem Thema ?

Gibt es Neuigkeiten zu diesem Thema ?

arbeiten daran. aber nichts zu berichten.

Wurde vereinbart, wie dies für Importe funktionieren soll?

Ich stelle mir vor, dass dies eine nette Benutzererfahrung wäre: Wenn ich im VS-Code Strg + T drücke (Typ, um Symbole projektweit zu suchen) und ein Symbol auswähle, kann ich irgendwie eine Importanweisung dafür generieren.

Winziges Bit, aus irgendeinem Grund zeigt die projektweite Symbolliste keine exportierten Variablen an, z. B. export let globalStyles = {} aber sie erscheint in der Dateisymbolliste. Die projektweite Symbolliste muss alle Symbole enthalten, damit sie als Import-GUI funktioniert.

@Ciantic Das hört sich gut an. Ich hätte es lieber, wenn Intellisense verwendet wird. Es importiert automatisch Dinge, die automatisch vervollständigt werden und nicht im Geltungsbereich liegen. Ich möchte auch die Option, nicht verwendete Importe oder weitere Funktionen zum Sortieren zu bereinigen. Eine andere Sache, die schön wäre, ist etwa, wenn Sie die letzte Verwendung von etwas Importiertem löschen, wird die Importanweisung entfernt.

Ich habe dies erstellt, um das Problem für mich selbst zu beheben. Https://marketplace.visualstudio.com/items?itemName=Sammons.ts-import-assistance . Der Code ist hier: https://github.com/Sammons/ts-import-assistance . Es ist nicht super intelligent, aber es macht das, was ich brauche. Im Wesentlichen habe ich keine einfache Möglichkeit gefunden, festzustellen, welche Symbole im aktuellen Dokument fehlten. Dies ist also ein Befehl, den Sie ausführen können, um das markierte Symbol zu suchen und zu importieren.

Dies baut nur auf der integrierten Symbolsuche auf.

Ich bin auch auf dieses VS Code Plugin gestoßen, um in der Zwischenzeit zu helfen:
https://marketplace.visualstudio.com/items?itemName=steoates.autoimport

Es hat extrem geholfen, als ich ein Projekt von Namespaces (internen Modulen) auf externe Module umstellte.

@Taytay Danke, habe es versucht, aber dadurch hängt mein VS-Code. Vielleicht ist meine App zu groß, aber für mich nutzlos.

Oh dang @rolandoldengarm. Verstanden. (Für das, was es wert ist, habe ich festgestellt, dass der Autor in Fragen reagiert, falls Sie es weiterverfolgen möchten.)

@Taytay Danke für die Info, aber ich habe meine eigene Erweiterung gemacht
Wenn Sie interessiert sind, finden Sie es hier: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

@buehler Das funktioniert

bitte wie ist der status davon? Die Roadmap hat es überprüft, aber der nächtliche Build zeigt es nicht

Wie benutzt du den nächtlichen Build?

@mhegazy Ich benutze VSCode mit dem

    "typescript.tsdk": "./node_modules/typescript/lib",

im .vscode/settings.json das auf das nächtliche Build-npm-Paket verweist (spätestens aktualisiert)

Es gibt keine automatische Vervollständigung für die Modulpfade für Importe

image

Wie Sie sehen können, zeigt die automatische Vervollständigung nur ein bereits gesehenes Texttoken an, nicht den Namen einer Datei auf der Disc

Es funktioniert mit relativen Pfaden, aber nicht mit "absoluten Pfaden" (Kombination von baseUrl und Pfaden).
Irgendeine Lösung oder Lösung für dieses Problem?
Vielen Dank

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

zhuravlikjb picture zhuravlikjb  ·  3Kommentare

uber5001 picture uber5001  ·  3Kommentare

manekinekko picture manekinekko  ·  3Kommentare

blendsdk picture blendsdk  ·  3Kommentare

kyasbal-1994 picture kyasbal-1994  ·  3Kommentare