web-dev-qa-db-ja.com

TypeScript Angular 4で文字列をブール値に変換する方法

これを聞いたのは初めてではないことを知っています。タイトルで述べたように、文字列値booleanを変換しようとしています。

以前にいくつかの値をローカルストレージに格納しました。今、すべての値を取得し、すべてをブール変数に割り当てたいと思います。

app.component.ts

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

here this.btnLoginNumOneおよびthis.btnLoginEditは文字列値( "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
}

このコンポーネントでは、this.btnLoginNumOneとthis.btnLoginEditはブール値です。

Stackoverflowでソリューションを試しましたが、何も機能しません。

誰でも私がこれを修正するのを助けることができます。

23
Zhu

方法1:

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

方法2:

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

方法3:

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

方法4:

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

方法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;
    }
}

ソース: http://codippa.com/how-to-convert-string-to-boolean-javascript/

50
Ayoub k

私はJSON.parse(value)で異なる値を試してきましたが、それは仕事をしているようです:

// 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));
5
Gonzalo

あなたのシナリオでは、文字列をブール値に変換することはsomeString === 'true'のようなものを介して行うことができます(すでに答えたように)。

ただし、主な問題であるローカルストレージの処理に対処してみましょう。

ローカルストレージは、値として文字列のみをサポートします。したがって、データをストレージに保存する前に常にデータを文字列としてシリアル化し、取得するときにプロセスを逆にするのが良い方法です。

JavaScriptでの処理は非常に簡単なので、データをシリアル化するための適切なフォーマットはJSONです。

したがって、データをJSONにシリアル化できる場合、次の関数を使用してローカルストレージと対話できます。

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

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

次に、例を次のように書き換えます。

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

そして:

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

拡張機能の定義:String + Extension.ts

interface String {
  toBoolean(): boolean
}

String.prototype.toBoolean = function (): boolean {
  switch (this) {
    case 'true':
    case '1':
    case 'on':
    case 'yes':
      return true
    default:
      return false
  }
}

そして、使用したいファイルにインポートします '@/path/to/String + Extension'

0
Renetik