文字列("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型を変換する機会はあまりないと思われるので、お役に立てたらと思います。
間違い・気付きなどあれば、コメントをいただけると助かります。