Je voudrais faire une réaffectation d'une variable de classe en Javascript (ou Typescript) en utilisant un opérateur ternaire. La réaffectation de this.foo dépend de la valeur actuelle de this.foo que je peux mettre à jour avec ce qui suit:

setFoo = () => {
    this.foo = this.foo ? "" : "foo";
}

Cependant, je me demande si je peux réaffecter this.foo sans écrire deux fois this.foo. Cela serait utile car j'essaie de mettre à jour dynamiquement des classes sur un composant angulaire (écrit en Typescript).

Je voudrais pouvoir écrire quelque chose comme ce qui suit qui utilise des valeurs de vérité / fausseté. Si this.foo est vrai, alors "" est attribué; sinon, "foo" est attribué:

setFoo = () => {
    this.foo =? "" : "foo";
}

J'ai essayé de rechercher des questions similaires mais je n'ai pas trouvé de réponse. Ma première pensée était d'utiliser l'opérateur ?? = dans Typescript 4.0 mais je ne pense pas que cela fonctionnera. Peut-être que ma solution idéale n'existe pas parce que cela pourrait être une mauvaise habitude de programmation. Merci

0
Charles Kornoelje 28 oct. 2020 à 20:23

2 réponses

Meilleure réponse

Excellente question. Malheureusement, ce n'est pas possible . Il existe une version abrégée que certaines personnes utilisent, mais elle inclut toujours une duplication:

foo = foo || otherCondition;

Donc la sténographie d'une sténographie, pas trop utile à mon avis.

Réponse courte : j'irais avec le ternaire normal.

1
Wai Ha Lee 29 oct. 2020 à 14:32

Vous devez utiliser IF ELSE au lieu d'utiliser l'instruction ternaire, if else vous donnera plus de contrôle sur l'instruction écrite sous elle et efficace à utiliser.

0
Riza 28 oct. 2020 à 17:36