Строка машинописного текста для boolean


3

Вы можете сделать что-то подобное, если у вас есть три состояния. 'true'указывает, что строка не обрабатывается как boolean:

true

0

Преобразование 1 0и '0'к trueи 0 'false' null undefinedи falseкfalse

function primitiveToBoolean(value: string | number | boolean | null | undefined): boolean {
  if (value === 'true') {
    return true;
  }

  return typeof value === 'string'
    ? !!+value   // we parse string to integer first
    : !!value;
}

Вот тест единицы:

describe('primitiveToBoolean', () => {
    it('should be true if its 1 / "1" or "true"', () => {
      expect(primitiveToBoolean(1)).toBe(true);
      expect(primitiveToBoolean('1')).toBe(true);
      expect(primitiveToBoolean('true')).toBe(true);
    });
    it('should be false if its 0 / "0" or "false"', () => {
      expect(primitiveToBoolean(0)).toBe(false);
      expect(primitiveToBoolean('0')).toBe(false);
      expect(primitiveToBoolean('false')).toBe(false);
    });
    it('should be false if its null or undefined', () => {
      expect(primitiveToBoolean(null)).toBe(false);
      expect(primitiveToBoolean(undefined)).toBe(false);
    });
    it('should pass through booleans - useful for undefined checks', () => {
      expect(primitiveToBoolean(true)).toBe(true);
      expect(primitiveToBoolean(false)).toBe(false);
    });
  });

Рецепт TypeScript: Элегантный Parse Boolean (ссылка на исходное сообщение)


Я предполагаю, что вы хотите, чтобы boolVar был истинным для ввода, равным true, а вход равен «true» (тот же для false), иначе он должен быть ложным.

let input = readSomeInput(); // true,"true",false,"false", {}, ...
let boolVar = makeBoolWhateverItIs(input);

function makeBoolWhateverItIs(input) {
    if (typeof input == "boolean") {
       return input;
    } else if typeof input == "string" {
       return input == "true";  
    }
    return false;
}
JavaScript, машинопись,

javascript,typescript,

2

Ответов: 3


3

Вы можете сделать что-то подобное, если у вас есть три состояния. 'true'указывает, что строка не обрабатывается как boolean:

true

0

Преобразование 1 0и '0'к trueи 0 'false' null undefinedи falseкfalse

function primitiveToBoolean(value: string | number | boolean | null | undefined): boolean {
  if (value === 'true') {
    return true;
  }

  return typeof value === 'string'
    ? !!+value   // we parse string to integer first
    : !!value;
}

Вот тест единицы:

describe('primitiveToBoolean', () => {
    it('should be true if its 1 / "1" or "true"', () => {
      expect(primitiveToBoolean(1)).toBe(true);
      expect(primitiveToBoolean('1')).toBe(true);
      expect(primitiveToBoolean('true')).toBe(true);
    });
    it('should be false if its 0 / "0" or "false"', () => {
      expect(primitiveToBoolean(0)).toBe(false);
      expect(primitiveToBoolean('0')).toBe(false);
      expect(primitiveToBoolean('false')).toBe(false);
    });
    it('should be false if its null or undefined', () => {
      expect(primitiveToBoolean(null)).toBe(false);
      expect(primitiveToBoolean(undefined)).toBe(false);
    });
    it('should pass through booleans - useful for undefined checks', () => {
      expect(primitiveToBoolean(true)).toBe(true);
      expect(primitiveToBoolean(false)).toBe(false);
    });
  });

Рецепт TypeScript: Элегантный Parse Boolean (ссылка на исходное сообщение)


Я предполагаю, что вы хотите, чтобы boolVar был истинным для ввода, равным true, а вход равен «true» (тот же для false), иначе он должен быть ложным.

let input = readSomeInput(); // true,"true",false,"false", {}, ...
let boolVar = makeBoolWhateverItIs(input);

function makeBoolWhateverItIs(input) {
    if (typeof input == "boolean") {
       return input;
    } else if typeof input == "string" {
       return input == "true";  
    }
    return false;
}
JavaScript, машинопись,
Похожие вопросы