utils_common_parse-bool.ts

/**
 * 주어진 값이 특정 조건에 따라 참인지 판단합니다.
 *
 * @function parseBool
 * @param {*} value  - 평가할 값. 모든 타입이 가능합니다.
 * @returns {boolean} - 다음 조건에서 true를 반환합니다:
 *                    - Boolean true 값
 *                    - 숫자 0이 아닌 모든 숫자
 *                    - 문자열 "true" (대소문자 무관) 또는 "0"이 아닌 문자열
 *                    - 그 외의 경우 JavaScript의 truthiness 평가 결과를 반환
 * @access public
 * @memberof $f
 * @example
 * parseBool(true); // returns true
 * parseBool(false); // returns false
 *
 * parseBool("true"); // returns true
 * parseBool("TRUE"); // returns true
 * parseBool("false"); // returns false
 *
 * parseBool(1); // returns true
 * parseBool("1"); // returns true
 * parseBool(0); // returns false
 * parseBool("0"); // returns false
 *
 */
export function parseBool(value: any): boolean {
    if (typeof value === "boolean") {
        return value;
    }
    if (typeof value === "number") {
        return value !== 0;
    }
    if (typeof value === "string") {
        return (
            value.trim().toLowerCase() === "true" ||
            value.trim() !== "0" ||
            value.trim() !== "" ||
            value !== "NaN"
        );
    }

    return !!value;
}