0
votes

Comment faire vérifier la propriété en ligne pour retourner Boolean?

J'ai une fonction:

function test(obj?: { someProperty: string}) {
  return !!(obj && obj.someProperty);
}


1 commentaires

Si vous voulez seulement vérifier si la propriété existe, alors !! (obj && obj.someproperty) est une solution valide, personnellement, je préférerais obj &&! obj.someproperty < / code>.


3 Réponses :



0
votes

L'opérateur && ne circule pas implicitement dans Boolean. Ce qui arrive réellement: xxx

Dans votre cas, vous avez trois possibilités:

  1. obj est indéfini -> retourne non défini
  2. Obj est défini mais CertaineProperty est indéfini -> retourne non défini
  3. Obj est défini et CertaineProperty est défini -> renvoie certaines propriétés (dans ce cas de chaîne)

5 commentaires

Cela ne répond pas vraiment à la question.


Merci pour le conseil! Je ne savais pas que (même si le type de retour de ma fonction indique exactement cela;))


@Samihult True, mais c'est une information utile de toute façon et aide à comprendre le problème fondamental.


@Samihult non, ce n'est pas la réponse. Mais ce sont les informations qu'il a besoin de résoudre son problème. Donnez un homme un poisson ...


Même réponse que j'aurais donné, il suffit d'ajouter que le moyen le plus simple de se déplacer est la façon dont il a déjà trouvé, utilisez !! . Typescript modèles Le comportement exact de JS, il est donc juste de dire obj && obj.someproperty est non défini | chaîne



1
votes

Vous pouvez utiliser cette solution:

function test(obj?: { someProperty: string}) {
  return obj && obj.someProperty && true || false;
}


4 commentaires

Intéressant. Mais comme !! est difficile à lire pour les utilisateurs avancés JavaScript.


Cela pourrait également retourner non défini de OBJ échectes.


Donc, vous pouvez utiliser ceci: obj! = Null && obj.hasownProperty ("quelqueProperty")


Ça empire: p