J'ai un problème très simple, je ne peux pas obtenir convertir un simple booléen en une valeur de chaîne dans TypeScript.
J'ai parcouru la documentation et je n'ai rien trouvé qui puisse m'aider. Bien sûr, j'ai essayé d'utiliser la méthode toString()
, mais elle ne semble pas être implémentée sur bool.
Edit: je n'ai presque aucune connaissance de JavaScript et je suis arrivé à TypeScript avec un arrière-plan C #/Java.
Il s’agit d’un bogue dans TypeScript ou d’une décision de conception consciente, mais vous pouvez le contourner en utilisant:
var myBool: bool = true;
var myString: string = String(myBool);
alert(myString);
En JavaScript, les booléens surchargent la méthode toString
, qui est disponible sur toute Object
(presque tout dans JavaScript hérite de Object
), donc ...
var myString: string = myBool.toString();
... devrait probablement être valide.
Il existe également un autre moyen de contourner ce problème, mais personnellement, je trouve cela un peu méchant:
var myBool: bool = true;
var myString: string = <string><any> myBool;
alert(myString);
Une approche consiste à utiliser l'opérateur Ternary:
myString = myBool? "true":"false";
Pour ceux qui recherchent une alternative, une autre façon de faire est d’utiliser un template littéral comme ceci:
const booleanVal = true;
const stringBoolean = `${booleanVal}`;
La vraie force en cela vient si vous ne savez pas avec certitude que vous obtenez une valeur booléenne. Bien que nous sachions dans cette question qu’il s’agit d’un booléen, ce n’est pas toujours le cas, même en TypeScript (s’il n’est pas pleinement exploité).
Ceci si vous devez aussi gérer des valeurs NULL:
stringVar = boolVar===null? "null" : (boolVar?"true":"false");