Typescript conversion to boolean

后端 未结 8 536
名媛妹妹
名媛妹妹 2021-02-02 05:19

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

8条回答
  •  渐次进展
    2021-02-02 05:49

    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);
            });
        })
    });
    

提交回复
热议问题