In Typescript I can do this:
var xxx : some_type;
if (xxx)
foo();
else
bar();
Here xxx will be treated as a boolean, regardless of its
Here's a simple function that will handle most scenarios, including handling booleans as an input (just in case):
type Falsey = undefined | null;
const parseBoolean = (val: string | boolean | number | Falsey): boolean => {
const s = val && val.toString().toLowerCase().trim();
if (s == 'true' || s == '1')
return true;
return false;
}
And here's a jest test to go with it:
describe('Boolean Parser', () => {
[
{ val: 'true', expected: true },
{ val: 'false', expected: false },
{ val: 'True', expected: true },
{ val: 'False', expected: false },
{ val: 'TRUE', expected: true },
{ val: 'FALSE', expected: false },
{ val: '', expected: false },
{ val: '1', expected: true },
{ val: '0', expected: false },
{ val: false, expected: false },
{ val: true, expected: true },
{ val: undefined, expected: false },
{ val: null, expected: false },
{ val: 0, expected: false },
{ val: 1, expected: true },
{ val: 111, expected: false }
].forEach(args => {
it(`should parse ${args.val} to boolean`, () => {
expect(parseBoolean(args.val)).toBe(args.expected);
});
})
});