459 votes

Comment utiliser `@ts-ignore` pour un bloc

Le site // @ts-ignore permet au compilateur TypeScript d'ignorer la ligne qui la suit.

Comment peut-on ignorer un bloc de code entier avec TypeScript ?

3 votes

Même pas @ts-ignore travaille sur une seule ligne en typographie 2.4.2 . Je suis passé à "typescript": "2.6.1" et puis ça a marché.

345voto

Venryx Points 11

Tu ne peux pas.

Comme solution de rechange, vous pouvez utiliser un // @ts-nocheck en haut d'un fichier pour désactiver la vérification de type pour ce fichier : https://devblogs.microsoft.com/typescript/announcing-typescript-3-7-beta/

Ainsi, pour désactiver la vérification d'un bloc (fonction, classe, etc.), vous pouvez le déplacer dans son propre fichier, puis utiliser le commentaire/flag ci-dessus. (Ce n'est pas aussi flexible que la désactivation basée sur les blocs bien sûr, mais c'est la meilleure option disponible pour le moment).

21 votes

Pour clarifier, vous ne pouvez toujours pas. La désactivation du contrôle de type pour un fichier est distincte de la désactivation au niveau du bloc.

2 votes

@garrettmaring D'accord ; la désactivation au niveau du fichier est juste un palliatif. (il n'est pas toujours pratique ou même possible de séparer un bloc donné dans son propre fichier - mais c'est plus proche de l'ignorance au niveau du bloc que des tonnes d'interruptions au niveau du fichier). @ts-ignore commentaires)

2 votes

Utiliser /* tslint:disable */ de faire la même chose pour tslint

295voto

Simon Warta Points 4331

Tu ne peux pas. C'est un problème ouvert dans TypeScript : https://github.com/Microsoft/TypeScript/issues/19573

17 votes

La réponse est-elle toujours valable deux ans plus tard ? La question de la typographie reste ouverte, mais y a-t-il d'autres développements ?

8 votes

Pour ceux qui veulent ignorer une seule ligne, ajoutez 2 lignes de commentaires au-dessus de la ligne que vous voulez autoriser : // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore

14 votes

@Ryan, ou utilisez simplement /* @ts-ignore */ à la place.

114voto

FelipeP Points 456

Il y a

// @ts-nocheck

Il peut être ajouté au début du fichier et toutes les erreurs qu'il contient seront ignorées. Ce n'est pas la réponse spécifique au bloc que vous recherchez, mais elle est équivalente dans certains scénarios.

https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/#ts-nocheck-in-typescript-files

0 votes

C'est la réponse correcte

0 votes

A résolu le problème de manière absolue

-1voto

Howard Points 220

Probablement une version plus moderne de tslint puisque la question est ancienne mais j'ai trouvé que ceci fonctionne...

avec un code comme celui-ci

icons["back"] = 'back';
icons["swap"] = 'swap';
icons["mix"] = 'mix';

J'obtiendrais l'erreur "Object access via string literals is disallowed (no-string-literal)".

Envelopper le bloc dans tsline:disable / enable fonctionne pour moi :

/* tslint:disable */
icons["back"] = 'back';
icons["swap"] = 'swap';
icons["mix"] = 'mix';
/* tslint:enable */

Ce n'est pas parfait, car vous ne pouvez pas spécifier quelle erreur ignorer dans le bloc, mais cela fonctionne si vous gardez votre bloc simple.

0 votes

Cette question concerne le compilateur ts et non tslint

-29voto

Phi Nguyễn Points 53

Si vous n'avez pas besoin d'un système de sécurité, il suffit de placer le bloc dans un nouveau fichier séparé et de changer l'extension en .js, .jsx.

12 votes

Bonjour et bienvenue à SO ! Veuillez lire le visite y Comment rédiger une bonne réponse ? Je ne pense pas que c'est ce que le PO voulait dire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X