web-dev-qa-db-fra.com

Pourquoi TSLint et JSLint signalent-ils des blocs vides?

De temps en temps, j'obtiens des erreurs TSLint "le bloc est vide". Cela se produit par exemple lorsque je passe un rappel automatique à une fonction:

doSomething(() => {});

D'après ce que j'ai lu, JSLint fait apparemment la même chose, mais je n'ai pas vérifié cela.

Je trouve ces utilisations tout à fait valables et j'ai donc essayé de trouver une raison pour laquelle les blocs vides sont considérés comme mauvais. Mais la seule chose que je puisse trouver (par exemple dans cette réponse ) sont les instructions pour ajouter un return; afin d’éviter l’erreur. C'est pas ce que je veux faire dans chaque rappel vide.

Pourquoi TSLint signale-t-il un problème au-dessus d'un bloc vide? Y a-t-il une raison pour laquelle je ne devrais pas désactiver le contrôle?

29
theDmi

Pourquoi TSLint signale-t-il le problème d'un bloc vide au-dessus de celui-ci?

Pour éviter des erreurs . Peut-être que la fonction a été oubliée pour être remplie. Recommandez () => undefined en tant que noop.

Plus

Si vous souhaitez le désactiver, ajoutez simplement "no-empty": false, à votre tslint.json (désactivation globale) ou désactivez-le en ligne à l'aide d'un commentaire /* tslint:disable:no-empty */.

46
basarat

Comme avec toutes les vérifications, vous avez le dernier mot pour déterminer si elles vous aident ou non. Vous pouvez désactiver cette vérification TSLint en utilisant l’une des options suivantes.

Désactiver la règle dans tslint.json

//...
"no-empty": false,
//...

Désactiver la règle dans le fichier:

/* tslint:disable:no-empty */

Vous pouvez toujours le réactiver si, à l'avenir, vous trouvez un bloc vide qui vous a causé un problème.

10
Fenton

Un moyen de supprimer l’erreur et de désigner intentionnellement ce bloc vide est de désactiver la règle temporaire:

// tslint:disable-next-line:no-empty
doSomething(() => {});

Ou faites le non vide

doSomething(() => {/**/});
2
estus

tslint v5.10.0 introduit "allow-empty-functions" option pour "no-empty" juste pour ce cas;
aussi "allow-empty-catch" (introduit dans v5.5.0 ) peut être utile:

"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]
0
Tomas Varga

Une autre solution possible consiste à utiliser

doSomething(() => { return })

Bien que ce ne soit pas exactement la question qui a été posée, j'ai découvert cette approche en essayant de résoudre la ligne signalée suivante:

export const generatorFn = function * (): IterableIterator<any> { }

Ma solution consistait à ajouter une instruction return comme ci-dessus, car les fonctions du générateur ne peuvent pas être exprimées sous forme de fonction de flèche:

export const generatorFn = function * (): IterableIterator<any> { return }
0
Patrick Roberts