J'ai une fonction:
function test(obj?: { someProperty: string}) { return !!(obj && obj.someProperty); }
3 Réponses :
Vous pouvez envelopper votre valeur de retour à Boolean A >: jsfiddle: https://jsfiddle.net/oq4jr518/ a> p> p>
Je pense que l'extrémité droite à Démarrer de i> est d'ajouter boolean code> comme type de retour (
test de fonction (...): booléen { code>). Puis ce casting ou
!! code>.
@Samihult ajout de Boolean comme type de retour ne fonctionne pas, car non défini n'est pas assignable à booléen code>
@Samihult, je ne suis pas sûr que l'ajout d'un type de retour suffirait à résoudre le problème.
Non, l'ajout de type de retour ne résoudra pas le problème, c'est pourquoi je l'ai écrit comme un commentaire. Et non, je n'ai pas non plus de bownvoite, je pense que c'est un moyen de résoudre le problème.
retour booléen (obj && obj.someproperty); code> est le même que
return !! (obj && obj.someproperty); code>, donc cela ne vous aide pas, car ceci est donc déjà énoncé dans la question
@Nikitamalyschkin La question indiquée Cela semble être un peu inconfortable pour certaines personnes CODE>, pas que cela ne fonctionne pas. Alors j'ai donné une meilleure façon de le faire.
L'opérateur Dans votre cas, vous avez trois possibilités: p> && code> ne circule pas implicitement dans Boolean. Ce qui arrive réellement:
CertaineProperty code> est indéfini -> retourne non défini li>
CertaineProperty code> est défini -> renvoie certaines propriétés (dans ce cas de chaîne) li>
ol> p>
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 !! code>. Typescript modèles Le comportement exact de JS, il est donc juste de dire
obj && obj.someproperty code> est
non défini | chaîne code>
Vous pouvez utiliser cette solution:
function test(obj?: { someProperty: string}) { return obj && obj.someProperty && true || false; }
Intéressant. Mais comme !! code> est difficile à lire pour les utilisateurs avancés JavaScript.
Cela pourrait également retourner non défini code> de OBJ échectes.
Donc, vous pouvez utiliser ceci: obj! = Null && obj.hasownProperty ("quelqueProperty")
Ça empire: p
Si vous voulez seulement vérifier si la propriété existe, alors
!! (obj && obj.someproperty) code> est une solution valide, personnellement, je préférerais
obj &&! obj.someproperty < / code>.