Typescript: Forneça preenchimento automático para<reference>e caminhos de importação</reference>

Criado em 22 jul. 2014  ·  36Comentários  ·  Fonte: microsoft/TypeScript

Oi,

Visual Studio (2013 Ultimate) fornece intellisense para o atributo src para elementos de script, lendo o sistema de arquivos e exibindo arquivos ou pastas disponíveis.

Image

Será muito útil se uma funcionalidade semelhante puder ser fornecida para <reference> e instruções de importação:


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

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

API Moderate Suggestion Visual Studio help wanted

Comentários muito úteis

Esta é de longe minha maior perda de tempo ao trabalhar com texto datilografado. Se ele puder preencher automaticamente o nome da minha classe, ele deve ser capaz de garantir que haja uma instrução de importação para ele. Eu acabo dando um palpite sobre o caminho e, em seguida, adicionando "../" a ele e esperando para ver se o swiggly vermelho vai embora e repetindo até que isso aconteça.

Também seria bom poder "otimizar as importações" e remover automaticamente as importações não utilizadas.

Todos 36 comentários

: +1:

@NoelAbrahams btw resharper fará isso por você:

image

@basarat , interessante. Nunca usei resharper e não acho que isso vai mudar. Portanto, para pessoas de ferramentas anti-terceiros como eu, espero que isso vá para o plugin VS. :sorrir:

: +1:

@NoelAbrahams btw atom-typescript irá completar suas referências: https://github.com/TypeStrong/atom-typescript#relative -paths

e até mesmo preenchimento automático do módulo externo "name" e "./path"s: rose:

Não sei se @ ahmad-farid teve realmente a chance de começar com isso, mas @basarat , essa funcionalidade é algo que você acha que poderia contribuir para o próprio TypeScript ou está mais fortemente acoplada ao atom-typescript?

é mais fortemente acoplado ao atom-typescript

Fortemente acoplado, eu faço a _poor_ tokenização para detectar:
https://github.com/TypeStrong/atom-typescript/blob/d5fb4707b989f15d3be8d57cfa28d88af50b4702/lib/main/atom/typescriptGrammar.ts#L68 -L76

O código para obter esses resultados é um pouco mais simples

Não precisa ser fortemente acoplado. Mas foi assim que eu o escrevi como um consumidor TypeScript e não pode haver um PR de copiar e colar.

Se alguém fizesse isso, faria a detecção _am I em um comentário de referência / importação de string? _ Em getCompletionInfo e, em seguida, faria as pesquisas lá.

Também mais aros possíveis: https://github.com/Microsoft/TypeScript/pull/2173#issuecomment -89347414

Você não pode arrastar e soltar paraisso parece muito mais fácil.

para o autocomplete de importação, sugiro ter outro recurso como "Copiar referência de importação" no gerenciador de soluções, clique com o botão direito do mouse no arquivo e cole no arquivo que escreveria como 'import fileName = require ("../ dir / filename");'. Isso deve acompanhar os caminhos relativos e a capitalização do nome do arquivo.

se alguém puder me orientar onde devo procurar nesta fonte, posso tentar adicionar.

O código relacionado ao Visual Studio que você precisaria modificar para fazer alterações como essa não é de código aberto no momento.

Na verdade, tivemos a geração de referência de arrastar e soltar /// em algum ponto, mas é altamente indetectável e não se dimensiona muito bem (você realmente deseja arrastar e soltar 5+ itens de partes distintas de sua solução em pastas que podem estar fechadas em explorador de soluções?).

Em qualquer caso, esse tipo de interação seria bom, mas também deveria ser mais fácil de fazer em um fluxo de trabalho focado no teclado, no qual o preenchimento automático ajudaria.

temos tantos módulos que percorrer o sistema de arquivos não é prático, e alguns deles são nomes de módulos externos gerados, não arquivos. Portanto, gostaríamos de executar uma indexação periódica e, de alguma forma, fornecer uma lista delas para os serviços de linguagem (por exemplo, um RPC ou um arquivo que preparamos no disco local, etc.)

+1 com preenchimento automático na importação será incrível.

Ainda vejo muitos pedidos para isso, especialmente agora com VSCode e Salsa, isso é efetivamente uma regressão (ou seja, eles costumavam fornecer conclusões em require para módulos). Acredito que alguns editores não Microsoft também fornecem suporte para isso em TypeScript / JavaScript. Devemos considerar puxar isso (ping @mhegazy ).

Honestamente, esse é o único motivo pelo qual tenho que continuar usando o Webstorm, que construiu manipuladores personalizados para referências e importações de autocompletar. E não apenas o preenchimento automático, mas também as correções automáticas.

Temos cerca de 25k linhas de atm Typescript e seria muito bom se esse recurso pudesse ser adicionado para que todos os outros IDEs pudessem adotá-lo.

Também precisamos desse recurso. Esta é uma das maiores desvantagens de um mundo Java, onde uma refatoração pode ser feita facilmente usando eclipse ou intellij.

Eu gostaria de comentar aqui, embora a conclusão da importação automática seja muito útil e agradável de se trabalhar, eu gostaria de salientar que esse recurso é um dos motivos pelos quais o web storm não é o ideal. A varredura de node_modules em uma base contínua cria uma sobrecarga significativa de memória e processamento que tornaria o VSCode um pouco mais lento, eu acho.

Resumindo - eu adoraria esse recurso, mas não à custa da incrível velocidade do VSCode. Como um editor leve, espero ter velocidade, potência e flexibilidade ao custo da conveniência. Um IDE lento tem um custo total de propriedade mais alto devido ao fato de estar constantemente criando atrasos, enquanto um editor mais leve permite que você passeie em um ritmo continuamente ininterrupto.

@mikepc curiou se você usou outras implementações como https://packagecontrol.io/packages/AutoFileName e como você encontra seu desempenho para os projetos em que WebStorm está lutando.

Acho que você pode ter um algoritmo sofisticado para a conclusão da importação que não sofra dos problemas de desempenho que você descreveu. Uma otimização seria usar o campo exclude no tsconfig para excluir arquivos e pastas do índice de preenchimento automático. Agora, apenas caminhos de arquivo de projeto serão preenchidos automaticamente. Se alguém importa um módulo de uma dependência, o texto digitado sabe onde essa dependência está localizada. Portanto, a pasta da dependência importada também é incluída no índice. A remoção pode ser gerenciada por meio de contadores de referência para cada módulo de dependência.

Eu não tenho qualquer conhecimento do funcionamento interno dos vários métodos de
passagem de pacote e, se de fato, é possível incluí-lo com apenas um
hit de desempenho menor eu adoraria tê-lo adicionado. eu gosto
usando VSCode. Eu só quero continuar a gostar de usá-lo.

Na segunda-feira, 18 de abril de 2016 às 12h37, Frederik Schubert <
notificaçõ[email protected]> escreveu:

Eu acho que você pode ter um algoritmo sofisticado para completar a importação
que não sofre os problemas de desempenho que você descreve. 1
otimização seria usar o campo de exclusão no tsconfig para excluir
arquivos e pastas do índice de completamento automático. Agora apenas arquivo de projeto
os caminhos serão preenchidos automaticamente. Se alguém importa um módulo de uma dependência, então
typescript sabe onde esta dependência está localizada. Portanto, a pasta do
a dependência importada também é incluída no índice. A remoção pode ser
gerenciado por meio de contadores de referência para cada módulo de dependência.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/Microsoft/TypeScript/issues/188#issuecomment -211543527

Depois de ler este tópico, ainda não tenho certeza se isso será implementado no VS Code. É simplesmente irritante fazer tudo isso manualmente todas as vezes.

Esta é de longe minha maior perda de tempo ao trabalhar com texto datilografado. Se ele puder preencher automaticamente o nome da minha classe, ele deve ser capaz de garantir que haja uma instrução de importação para ele. Eu acabo dando um palpite sobre o caminho e, em seguida, adicionando "../" a ele e esperando para ver se o swiggly vermelho vai embora e repetindo até que isso aconteça.

Também seria bom poder "otimizar as importações" e remover automaticamente as importações não utilizadas.

Sim, por favor, isso é uma dor na bunda.

Alguma novidade sobre isso ?

Alguma novidade sobre isso ?

trabalhando nisso. mas nada a relatar.

Houve um acordo sobre como isso deve funcionar para as importações?

Eu imagino que isso seria uma boa experiência para o usuário: no VS Code, se eu pressionar Ctrl + T (digite para pesquisar símbolos em todo o projeto) e escolher um símbolo, isso me permitiria de alguma forma gerar uma instrução de importação para ele.

Tiny bit relacionado, alguma razão pela qual a lista de símbolos de todo o projeto não me mostra variáveis ​​exportadas, por exemplo, export let globalStyles = {} mas aparece dentro da lista de símbolos de arquivo. A lista de símbolos de todo o projeto deve mostrar todos os símbolos para funcionar como GUI de importação.

@Ciantic Isso parece bom. Eu preferiria que, ao usar o Intellisense, ele importasse automaticamente coisas que ele autocompleta e que não estivessem no escopo. Também gostaria da opção de limpar as importações não utilizadas ou de outras funcionalidades para classificá-las. Outra coisa que seria bom é algo como se você excluir o último uso de algo importado, a instrução import será removida.

Eu criei isso para resolver o problema para mim mesmo https://marketplace.visualstudio.com/items?itemName=Sammons.ts-import-assistance , o código está aqui: https://github.com/Sammons/ts-import-assistance . Não é superinteligente, mas faz o que preciso. Essencialmente, não encontrei uma maneira fácil de ver quais símbolos estavam faltando no documento atual - então, este é um comando que você pode executar para pesquisar e importar o símbolo que você destacou.

Isso apenas se baseia na pesquisa de símbolos integrada.

Eu também descobri e usei este plug-in de código VS para ajudar nesse meio tempo:
https://marketplace.visualstudio.com/items?itemName=steoates.autoimport

Ajudou _tremendously_ quando eu estava trocando um projeto de namespaces (módulos internos) para módulos externos.

@Taytay Obrigado, tentei, mas está fazendo meu código VS travar .. Talvez meu aplicativo seja muito grande, mas é inútil para mim.

Oh dang @rolandoldengarm. Entendido. (Pelo que vale a pena, descobri que o autor é responsivo em questões caso você queira investigá-lo.)

@Taytay Obrigado pela informação, mas eu fiz minha própria extensão ;-) atualmente estou reescrevendo a lógica para torná-la mais rápida. Não estou usando regex para analisar os arquivos (como muitos outros fazem), mas uso o compilador de script para gerar o AST da fonte.
Se estiver interessado, você o encontrará aqui: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

@buehler Isso funciona muito bem! Ainda não tive problemas. Definitivamente, muito mais rápido do que digitar tudo.

por favor, qual é o status disso? o roteiro foi verificado, mas a compilação noturna não o mostra

como você está usando o nightly build?

@mhegazy, estou usando VSCode com o

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

no .vscode/settings.json apontando para o pacote nightly build npm (o último acabou de ser atualizado)

não há preenchimento automático para os caminhos do módulo para importações

image

como você pode ver, o preenchimento automático mostra apenas um token de texto já visto, não o nome de um arquivo no disco

Funciona com caminhos relativos, mas não com "caminhos absolutos" (combinação de baseUrl e caminhos).
Qualquer solução ou solução alternativa para este problema?
obrigado

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

fwanicka picture fwanicka  ·  3Comentários

dlaberge picture dlaberge  ·  3Comentários

Roam-Cooper picture Roam-Cooper  ·  3Comentários

manekinekko picture manekinekko  ·  3Comentários

CyrusNajmabadi picture CyrusNajmabadi  ·  3Comentários