TypeScript - 'true'や'false'の文字列をboolean型に変換する

単純にキャストすると常にtrueとなるため、期待通りに動作しません。

NG例

下記のコードは すべて true になります。
// Boolean('true') -> true
console.log("Boolean('true')");
console.log(Boolean('true'));

// Boolean('false') -> true
console.log("Boolean('false')");
console.log(Boolean('false'));

// Boolean('1') -> true
console.log("Boolean('1')");
console.log(Boolean('1'));

// Boolean('0') -> true
console.log("Boolean('0')");
console.log(Boolean('0'));
サンプルプログラムの実行結果
サンプルプログラムの実行結果

正しい方法

文字列が 'true' か判定し、一致すれば true とします。 'TRUE' や 'True' でも誤動作しないよう、toLowerCase 関数で小文字に変換してから比較します。

文字列をbool型に変換する関数

function stringToBoolean(value: string | null | undefined): boolean {
    // null、undefined は false
    if (!value) {
        return false;
    }

    // 小文字にして判定
    return value.toLowerCase() === 'true' || value === '1';
}

上記関数の使用例

// stringToBoolean('true') -> true
console.log("stringToBoolean('true')");
console.log(stringToBoolean('true'));

// stringToBoolean('false') -> false
console.log("stringToBoolean('false')");
console.log(stringToBoolean('false'));

// stringToBoolean('1') -> true
console.log("stringToBoolean('1')");
console.log(stringToBoolean('1'));

// stringToBoolean('0') -> false
console.log("stringToBoolean('0')");
console.log(stringToBoolean('0'));
サンプルプログラムの実行結果
サンプルプログラムの実行結果

検証環境