Existe uma maneira de ignorar uma única linha, como em jshint?
Eu tentei // tslint ignore: line, mas isso não parece funcionar.
infelizmente, ainda não temos isso. você tem que habilitar e desabilitar a linha explicitamente.
Como você desativa uma linha?
https://github.com/palantir/tslint#tslint -rule-flags
Para quem está aqui para encontrar uma solução alternativa
/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file
por exemplo
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
houve alguma investigação sobre a implementação de um recurso semelhante ao descrito acima?
@patsissons qual recurso exatamente? Atualmente é possível habilitar / desabilitar uma única linha com dois comentários.
o recurso seria uma desativação de linha menos detalhada. ESLint
tem vários métodos de fazer disabes de regra de linha única.
Por exemplo,
// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2
O método de agrupamento é ótimo como redundância para desabilitações de regras complexas, mas inline (ou próxima linha) tende a deixar o código menos poluído (esta é minha opinião, é claro, mas provavelmente não tão irracional).
Isso é barulhento:
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */
Isto é muito melhor:
var x; // eslint-disable-line rule1 rule2
Ou mesmo apenas:
var x; // tslint:disable
O fato de ser um comentário de linha implicaria que desabilitaria apenas uma linha perfeitamente, eu acho.
Ou na pior das hipóteses:
var x; // tslint:disable-line
aceitar PRs para isso. aqui está uma alteração um tanto relacionada recente que permitiu //
vez de /*
comentários para desativação (dois comentários ainda são necessários): https://github.com/palantir/tslint/pull/1134
Vou tentar chegar a isso esta noite, se não for muito desafiador, espero que uma RP esta noite também
👍 Vamos acompanhar de perto o ESLint aqui:
someCode(); // tslint:disable-line
// tslint:disable-next-line
someCode();
e
someCode(); // tslint:disable-line:rule1 rule2
// tslint:disable-next-line:rule1
someCode();
Isso é exatamente o que eu gostaria de alcançar: +1:
embora, apenas para maior clareza, ESLint não use dois pontos, seu estilo é o seguinte:
// eslint-disable-next-line rule1, rule2
someCode();
Assumirei que você prefere que fiquemos com o estilo TSLint que você incluiu acima (dois pontos e nenhuma regra de separação de vírgulas).
👍 Vamos nos ater ao estilo TSLint para manter a consistência
Eu tenho isso funcionando agora e estou passando por uma limpeza de commit antes de criar o PR. A estratégia era converter as variantes -line
e -next-line
em seus switches de comentário totalmente expressos equivalentes. Isso é feito rastreando a posição inicial da linha (para -line
switches) e realizando um look-ahead para o final da linha seguinte (para -next-line
switches). Isso parece funcionar muito bem e tem efeitos colaterais mínimos, pois está simplesmente agindo como um apelido para o formato mais detalhado.
Apenas uma observação antes de eu colocar meu PR em ordem, devido à forma como o código de intervalo desabilitado funciona, você não será capaz de fazer algo assim
// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name
Sinceramente, nunca espero que alguém faça algo assim, mas só queria anotar isso aqui. Você ainda pode fazer aninhamento padrão como este
// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable
Dúvida sobre a implementação, isso funciona?
/**
* this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
*/
Não, os comentários do switch não são analisados dessa forma, eles devem ser formatados corretamente. Eu acredito em seu exemplo, você colocaria o comentário de desativação de linha única fora do comentário de várias linhas e isso deve funcionar conforme o esperado.
Obrigado pelo esclarecimento, entendi.
@lijunle, revisitando seu exemplo, acho que minha explicação estava um tanto incorreta. Eu não acho que você poderia alcançar o resultado pretendido desabilitando uma única linha. Acredito que o analisador não seria capaz de voltar a desabilitar todo o comentário multilinha. para desabilitar uma regra em um comentário de várias linhas, você precisaria envolver o comentário com um par de interruptores.
nenhuma das opções acima funciona
vocês estão falando sobre proposição de recursos ou já implementados?
difícil de seguir
@ phil123456 https://github.com/palantir/tslint#rule -flags
// tslint:disable-next-line <optional rule identifier>
var foo = 123;
^ O link mudou para aqui: https://github.com/palantir/tslint/blob/master/docs/usage/rule-flags/index.md
Puta merda. Nem as palavras "suprimir" nem "ignorar" aparecem nessa documentação. Eu não posso acreditar o quanto foi necessário pesquisar no Google para me levar a este problema, leia tudo acima, apenas para descobrir que é um recurso suportado e documentado, mas as palavras-chave apropriadas não estão nos documentos, então é impossível para o Google. Você precisa clonar todo o repositório e enviar um PR para isso ou existe uma maneira mais rápida de sugerir correções para arquivos .md?
@pbarranis você pode fazer um novo tíquete com isso como uma solicitação de recurso. Se eles não fizerem a mudança, fazer um PR pode ser o próximo passo.
A propósito, você também pode fazer isso na mesma linha:
console.log("poop"); // tslint:disable-line no-console
Pelo menos em [email protected].
Isso não funciona com regras como ordered-imports
//@ts-ignore
https://palantir.github.io/tslint/rules/
//@ts-ignore
https://palantir.github.io/tslint/rules/
infelizmente, esta página mostra apenas como proibir o uso disso. Ele não mostra como usá-lo adequadamente nem explica o quanto o tsLint ignora quando você o usa. Não sei por que não é mencionado nesta página que explica como suprimir regras https://palantir.github.io/tslint/usage/rule-flags/
E concordo com o comentário acima que perguntou POR QUE esta página não menciona as palavras "suprimir" ou "ignorar" para que possa ser facilmente encontrada ao usar o Google?
Para sua informação, esta página agora diz que o TSLint está sendo EOL este ano: https://github.com/palantir/tslint#tslint -rule-flags
Ah, o tslint está eventualmente (ainda não) sendo mesclado com o eslint, então isso é bom, suponho.
A questão é que agora tslint
suporta o recurso de ignorar próxima linha.
Exemplo:
// tslint:disable-next-line
Ou
// tslint:disable-next-line:rule1 rule2 rule3
Para obter mais detalhes e exemplos, consulte https://palantir.github.io/tslint/usage/rule-flags/
🤖 Beep boop! 👉 TSLint está obsoleto 👈 e você deve mudar para typescript-eslint ! 🤖
🔒 Este problema está sendo bloqueado para evitar novas discussões desnecessárias. Obrigado! 👋
Comentários muito úteis
Para quem está aqui para encontrar uma solução alternativa
por exemplo
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */