Language-tools: Bug: Usar a sintaxe de assinatura automática para uma loja que foi definida no script context = "module" produz um erro.

Criado em 2 mar. 2021  ·  6Comentários  ·  Fonte: sveltejs/language-tools

Dê uma olhada no componente Test no seguinte REPL:
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3

Uma loja é criada em uma tag de script context="module" e está sendo usada com um cifrão $ anexado a ela, na marcação. Funciona como esperado. No entanto, o mesmo código no VS Code mostra um erro:

image

Observe que ele funciona e compila corretamente, ou seja, o compilador não dá erros; portanto, deve ser a extensão Svelte VS Code que é o problema, basicamente, ele não reconhece adequadamente nenhuma loja que tenha sido definida no script context="module" e, como resultado, faz com que um rabisco vermelho apareça abaixo de $count aqui.

Além disso, é apenas quando o atributo lang="ts" está presente na tag <script> que o rabisco vermelho aparece.

Eu agradeceria se isso pudesse ser corrigido em breve.

Fixed bug

Comentários muito úteis

Usar a sintaxe de assinatura automática para uma loja que foi definida no script context = "module" não deve mais gerar um erro na extensão do código VS 104.6.0 / svelte-check 1.2.1

Todos 6 comentários

  1. Enfrentou o mesmo problema.
    Error: Cannot find name '$username'. Did you mean 'username'? (ts) quando username criado em context="module" .

image

  1. Há mais um erro ao executar a verificação svelte:
> svelte-check --ignore src/node_modules/<strong i="15">@sapper</strong>

/src/routes/my/test.svelte:2:2
Hint: '$username' is declared but its value is never read. (ts)
<script lang="ts">
  import { username } from './_store';

Código:
image

Versão:

    "svelte": "^3.35.0",
    "svelte-check": "^1.2.0",
    "typescript": "^4.2.2"

@fivemru Mas a imagem está correta? Porque parece que você não está definindo username na tag de script context="module" mas em um arquivo separado.

@fivemru Mas a imagem está correta? Porque parece que você não está definindo username na tag de script context="module" mas em um arquivo separado.

A captura de tela é para o segundo caso. Adicionado mais um para o primeiro.
No segundo caso, o erro não aparece no vscode, mas está lá ao executar o svelte-check

@fivemru Oh ok. Entendi.

O segundo erro não está relacionado. Alguém poderia argumentar que está correto porque você só escreve para a loja e nunca lê. Ao fazer $username = .. você diz a Svelte para assinar aquela loja, mas você nunca a usa. Neste caso, username.set(..) é a melhor opção. Ainda assim, entendo que isso é confuso, então podemos tentar remover essa dica.

Usar a sintaxe de assinatura automática para uma loja que foi definida no script context = "module" não deve mais gerar um erro na extensão do código VS 104.6.0 / svelte-check 1.2.1

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