web-dev-qa-db-fra.com

Comment convertir une chaîne en booléen dans TypeScript Angular 4

Je sais que je ne suis pas le premier à poser cette question et, comme je l'ai mentionné dans mon titre, j'essaie de convertir une valeur de chaîne booléenne.

J'ai déjà placé certaines valeurs dans le stockage local. Maintenant, je souhaite obtenir toutes les valeurs et les affecter à certaines variables booléennes.

app.component.ts

localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);

ici, this.btnLoginNumOne et this.btnLoginEdit sont des valeurs de chaîne ("true, false") .

mirror.component.ts

if (localStorage.getItem('CheckOutPageReload')) {
      let stringToSplit = localStorage.getItem('CheckOutPageReload');
      this.pageLoadParams = stringToSplit.split(',');

      this.btnLoginNumOne = this.pageLoadParams[0]; //here I got the error as boolean value is not assignable to string
      this.btnLoginEdit = this.pageLoadParams[1]; //here I got the error as boolean value is not assignable to string
}

dans ce composant this.btnLoginNumOne et this.btnLoginEdit sont Boolean values;

J'ai essayé les solutions dans stackoverflow mais rien n'a fonctionné.

Quelqu'un peut-il m'aider à résoudre ce problème.

4
Zhu

Méthode 1:

var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true

Méthode 2:

var stringValue = "true";
var boolValue = (stringValue =="true");   //returns true

Méthode 3:

var stringValue = "true";
var boolValue = JSON.parse(stringValue);   //returns true

Méthode 4:

var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true' ? true : false;   //returns true

Méthode 5:

var stringValue = "true";
var boolValue = getBoolean(stringValue); //returns true
function getBoolean(value){
   switch(value){
        case true:
        case "true":
        case 1:
        case "1":
        case "on":
        case "yes":
            return true;
        default: 
            return false;
    }
}

source: http://codippa.com/how-to-convert-string-to-boolean-javascript/

17
Ayoub k

Dans votre scénario, la conversion d'une chaîne en un booléen peut s'effectuer via quelque chose comme someString === 'true' (comme déjà répondu).

Cependant, permettez-moi d’essayer de répondre à votre problème principal: gérer le stockage local.

Le stockage local ne prend en charge que les chaînes en tant que valeurs; une bonne façon de l'utiliser serait donc de toujours sérialiser vos données sous forme de chaîne avant de les stocker dans le stockage et d'inverser le processus lors de l'extraction.

Le format JSON est peut-être un bon format pour la sérialisation de vos données, car il est très facile de traiter en JavaScript.

Les fonctions suivantes pourraient ainsi être utilisées pour interagir avec le stockage local, à condition que vos données puissent être sérialisées en JSON.

function setItemInStorage(key, item) {
  localStorage.setItem(key, JSON.stringify(item));
}

function getItemFromStorage(key) {
  return JSON.parse(localStorage.getItem(key));
}

Votre exemple pourrait alors être réécrit comme suit:

setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);

Et:

if (getItemFromStorage('CheckOutPageReload')) {
  const pageLoadParams = getItemFromStorage('CheckOutPageReload');
  this.btnLoginNumOne = pageLoadParams[0];
  this.btnLoginEdit = pageLoadParams[1];
}
0
nunocastromartins

J'ai essayé différentes valeurs avec JSON.parse(value) et il semble que le travail soit fait:

// true
Boolean(JSON.parse("true"));
Boolean(JSON.parse("1"));
Boolean(JSON.parse(1));
Boolean(JSON.parse(true));

// false
Boolean(JSON.parse("0")); 
Boolean(JSON.parse(0));
Boolean(JSON.parse("false"));
Boolean(JSON.parse(false));
0
Gonzalo