Home Reference Source Test

src/predicates/isLessThan.ts

  1. import { Predicate } from './Predicate';
  2.  
  3. /**
  4. * @desc Ensures that the `value` is less than the `upperBound`.
  5. *
  6. * @example
  7. * import { ensure, isLessThan, TinyType } from 'tiny-types';
  8. *
  9. * class InvestmentPeriodInYears extends TinyType {
  10. * constructor(public readonly value: number) {
  11. * ensure('Investment period in years', value, isLessThan(50));
  12. * }
  13. * }
  14. *
  15. * @param {number} upperBound
  16. * @returns {Predicate<number>}
  17. */
  18. export function isLessThan(upperBound: number): Predicate<number> {
  19. return Predicate.to(`be less than ${ upperBound }`, (value: number) =>
  20. typeof value === 'number' &&
  21. Number.isFinite(value) &&
  22. value < upperBound,
  23. );
  24. }