JavaScript
TypeScript

[JavaScript][TypeScript] 文字列("true", "false")をboolean型に変換する

More than 1 year has passed since last update.

文字列("true", "false")をboolean型に変換しようと思ったが、良い方法が思いつかなかったのでメモ

前提条件

TypeScriptで、引数文字列をboolean型に変換するメソッドを作りたい

public toBoolean(booleanStr: string): boolean {
    // 引数文字列をboolean型に変換した結果を返却
}

悪い書き方(と思われる)

public toBoolean(booleanStr: string): boolean {
    return JSON.parse(booleanStr);
}

わざわざJSON.parse()を使うのは大げさな気がするし、コストが高いような気がする...
さらに、JSON.parse()は厳密な使い方でないとエラーを吐くことが判明

JSON.parse("true");    // true
JSON.parse("false");   // false
JSON.parse("TRUE");    // エラーになる
JSON.parse("FALSE");   // エラーになる
JSON.parse(null);      // null
JSON.parse(undefined); // エラーになる

良い書き方(と思われる)

converting String true/false to Boolean value [duplicate]を参照したところ、良さそうな書き方があったので書き直し

public toBoolean(booleanStr: string): boolean {
    // "true"文字列と比較した結果を返す
    // 念のため小文字化しておく
    return booleanStr.toLowerCase() === "true";
}

この方法であれば、厳密な使い方をしなくてもエラーにはならない

XXX.toBoolean("true");    // true
XXX.toBoolean("false");   // false
XXX.toBoolean("TRUE");    // true
XXX.toBoolean("FALSE");   // false
XXX.toBoolean(null);      // エラーにならず, false
XXX.toBoolean(undefined); // エラーにならず, false

おわりに

文字列("true", "false")をboolean型を変換する機会はあまりないと思われるので、お役に立てたらと思います。
間違い・気付きなどあれば、コメントをいただけると助かります。