Por que o GitHub Copilot para de sugerir código em arquivos TypeScript
🔍 WiseChecker

Por que o GitHub Copilot para de sugerir código em arquivos TypeScript

O GitHub Copilot para de sugerir código em arquivos TypeScript quando a extensão perde a conexão com o servidor de linguagem ou quando a configuração do projeto bloqueia as sugestões inline. Esse problema ocorre com frequência após uma atualização do VS Code, uma mudança na versão do TypeScript usada pelo projeto ou quando as configurações de telemetria do Copilot estão incorretas. A causa raiz geralmente é uma incompatibilidade entre o serviço de linguagem TypeScript do qual o Copilot depende e o tipo de arquivo real ou as configurações do tsconfig. Este artigo explica os motivos técnicos por trás da falha e fornece correções passo a passo para restaurar as sugestões do Copilot em arquivos .ts e .tsx.

Principais conclusões: Restaurar sugestões do Copilot no TypeScript

  • Configurações do VS Code > Extensões > Copilot > Language Server: Garante que o servidor de linguagem TypeScript do Copilot esteja ativo e não bloqueado por outras extensões.
  • tsconfig.json > padrões include/exclude: Padrões de arquivo mal configurados podem impedir o Copilot de indexar arquivos TypeScript, interrompendo as sugestões.
  • Ícone da barra de status do Copilot > Enable completions: Um único clique na barra de status do VS Code reativa as sugestões inline se elas foram desabilitadas manualmente.

Por que o Copilot para de sugerir em arquivos TypeScript

O GitHub Copilot usa o serviço de linguagem TypeScript para entender o contexto do seu código. Quando o serviço de linguagem não está em execução ou é incompatível com a versão do TypeScript do projeto, o Copilot não consegue gerar sugestões. Esse problema geralmente aparece após uma atualização do VS Code que altera a versão interna do TypeScript, ou quando um projeto usa um tsconfig.json personalizado que exclui o arquivo atual.

Outra causa comum é a extensão Copilot perder seu evento de ativação. A extensão é ativada quando detecta um tipo de arquivo suportado, mas se o modo de linguagem do arquivo não estiver definido como TypeScript ou TypeScript React, a extensão pode não carregar. Isso pode acontecer quando a extensão do arquivo é .ts, mas o modo de linguagem foi alterado manualmente para Plain Text ou JavaScript.

Restrições de rede ou configurações de proxy também podem bloquear a conexão do Copilot com a API do GitHub Copilot. Sem uma conexão ativa, a extensão entra em estado desabilitado e para de fornecer sugestões para todos os tipos de arquivo, incluindo TypeScript.

Desconexão do serviço de linguagem TypeScript

O Copilot se comunica com o serviço de linguagem TypeScript por meio da API de extensão integrada do VS Code. Se o serviço de linguagem falhar ou for desabilitado por outra extensão, o Copilot não consegue recuperar informações de tipo ou contexto de conclusão. Isso resulta em painéis de sugestão vazios ou nenhum texto fantasma inline.

tsconfig.json exclui o arquivo atual

Quando o tsconfig.json de um projeto usa um padrão include ou exclude que não cobre o arquivo aberto, o Copilot pode não indexar esse arquivo. A extensão depende do modelo de projeto TypeScript para entender importações e definições de tipo. Se o arquivo estiver fora do escopo do projeto, o Copilot o trata como um arquivo JavaScript sem tipo e pode parar de gerar sugestões específicas do TypeScript.

Passos para restaurar as sugestões do Copilot em arquivos TypeScript

Siga estes passos em ordem. Após cada etapa, teste o Copilot digitando uma assinatura de função em um arquivo .ts. Se as sugestões retornarem, você pode parar.

  1. Verifique o ícone da barra de status do Copilot
    Olhe no canto inferior direito do VS Code. O ícone do Copilot mostra um círculo com um visto quando ativo, ou um círculo com uma linha quando desabilitado. Clique no ícone e selecione Enable completions. Isso reativa as sugestões inline se elas foram desligadas manualmente.
  2. Verifique o modo de linguagem do arquivo
    Clique no indicador de modo de linguagem na barra de status inferior direita (por exemplo, TypeScript ou JavaScript). Certifique-se de que está definido como TypeScript ou TypeScript React para arquivos .tsx. Se mostrar Plain Text ou outro modo, selecione TypeScript no menu suspenso. O Copilot só ativa para modos de linguagem suportados.
  3. Recarregue o serviço de linguagem TypeScript
    Abra a Paleta de Comandos com Ctrl+Shift+P. Digite TypeScript: Restart TS server e pressione Enter. Isso reinicia o serviço de linguagem e força o Copilot a registrar seus ouvintes novamente. Após a reinicialização, digite algumas linhas para ver se as sugestões aparecem.
  4. Verifique os padrões include/exclude do tsconfig.json
    Abra o tsconfig.json do seu projeto. Procure pelos arrays include e exclude. Se o caminho do arquivo atual não corresponder a nenhum padrão include, adicione-o. Por exemplo, se seu arquivo é src/components/Button.ts e include é [“src//ts”], ele deve estar coberto. Se exclude contiver a pasta do arquivo, remova-a. Salve o arquivo e reinicie o servidor TS.
  5. Desabilite extensões conflitantes
    Algumas extensões como ESLint, Prettier ou versões antigas do Copilot podem interferir. Abra o painel de Extensões com Ctrl+Shift+X. Desabilite todas as extensões exceto GitHub Copilot e GitHub Copilot Chat. Recarregue a janela do VS Code. Se as sugestões retornarem, habilite as extensões uma por uma para encontrar o conflito.
  6. Atualize ou reinstale o GitHub Copilot
    Abra o painel de Extensões, encontre GitHub Copilot e clique no ícone de engrenagem. Selecione Install Another Version e escolha a versão estável mais recente. Se você já tiver a mais recente, clique em Uninstall, reinicie o VS Code e reinstale a partir do marketplace.
  7. Verifique a conectividade de rede
    Abra o terminal do VS Code e execute curl -I https://api.githubcopilot.com. Se você obtiver um timeout ou conexão recusada, sua rede pode estar bloqueando o Copilot. Entre em contato com seu departamento de TI para permitir tráfego para api.githubcopilot.com e todos os subdomínios. Você também pode definir um proxy nas configurações do VS Code em Http: Proxy.

Se o Copilot ainda tiver problemas após a correção principal

Mesmo após seguir os passos acima, alguns usuários encontram problemas persistentes. Abaixo estão os problemas restantes mais comuns e como resolvê-los.

Copilot sugere JavaScript em vez de TypeScript

Isso acontece quando o arquivo não é reconhecido como TypeScript pelo serviço de linguagem. Abra a Paleta de Comandos e execute Developer: Inspect Editor Tokens and Scopes. Verifique se o escopo da linguagem inclui source.ts. Se mostrar source.js, o modo de linguagem do arquivo está errado. Reatribua para TypeScript usando o método da barra de status descrito no passo 2.

Copilot funciona em arquivos .js, mas não em .ts

Isso indica um problema de configuração específico do TypeScript. Abra o tsconfig.json e certifique-se de que compilerOptions.allowJs não está definido como false se você tiver tipos de arquivo mistos. Verifique também se o arquivo não está excluído por um tsconfig.json pai em uma configuração de monorepo. Execute tsc –showConfig no terminal para ver a configuração efetiva.

Sugestões do Copilot estão muito lentas ou incompletas

Sugestões lentas geralmente indicam um projeto grande com muitos arquivos. O Copilot indexa todo o workspace. Abra as configurações do VS Code e pesquise por github.copilot.editor.enableAutoCompletions. Defina como false e depois novamente como true para redefinir o mecanismo de sugestão. Você também pode reduzir o atraso da sugestão definindo github.copilot.editor.suggestionDelay como 0.

Copilot Ativo vs Copilot Desabilitado: Principais Diferenças

Item Copilot Ativo Copilot Desabilitado
Texto fantasma inline Aparece enquanto você digita Nenhum texto fantasma exibido
Ícone da barra de status Círculo com visto Círculo com linha
Conexão com o serviço de linguagem Conectado ao servidor TS Não conectado
Dependência do tsconfig.json Arquivo deve estar incluído Nenhuma dependência
Requisito de rede Deve alcançar api.githubcopilot.com Não é necessário

Agora você pode diagnosticar e corrigir os três motivos mais comuns pelos quais o Copilot para de sugerir código em arquivos TypeScript: desconexão do serviço de linguagem, exclusão do tsconfig e conclusões desabilitadas. Comece verificando o ícone da barra de status e o modo de linguagem do arquivo. Se o problema persistir, reinicie o servidor TypeScript e revise os padrões do tsconfig.json. Para solução de problemas avançada, desabilite extensões conflitantes e verifique o acesso de rede à API do Copilot. Para evitar interrupções futuras, fixe a versão do TypeScript do VS Code nas configurações com a opção typescript.tsdk.