web-dev-qa-db-fra.com

TypeScript: Convertir une valeur booléenne en chaîne

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.

33
Ucodia

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);
57
Fenton

Une approche consiste à utiliser l'opérateur Ternary:

myString = myBool? "true":"false";
3
Tolga

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é).

2
Jon Black

Ceci si vous devez aussi gérer des valeurs NULL:

stringVar = boolVar===null? "null" : (boolVar?"true":"false");
0
Luca C.