BigRational.js icon indicating copy to clipboard operation
BigRational.js copied to clipboard

Missing Typescript definitions

Open dpinart opened this issue 8 years ago • 2 comments

Hi, Where can I find BigRational typescript definitions? I've seen it exists https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/big-integer for big integer but couldn't find the repo for big-rational

dpinart avatar Nov 14 '16 11:11 dpinart

I'm not sure that anybody's taken the effort to create them yet, since BigRational isn't as popular as BigInteger.

peterolson avatar Nov 14 '16 16:11 peterolson

I have a basic type for big-rational here, just put together quickly to get by.

declare module 'big-rational' {
  class BigRational {
    public numerator: BigInteger;
    public denominator: BigInteger;

    abs(): BigRational;
    add(num: BigRational | string | number): BigRational;

    divide(by: BigRational | string | number): BigRational;
    divide(num: BigInteger | number, denom: BigInteger | number): BigRational;

    ceil(toBigInt?: false): BigRational;
    ceil(toBigInt: true): BigInteger;

    compareAbs(to: BigRational | BigInteger | number): -1 | 0 | 1;
    compare(to: BigRational | BigInteger | number): -1 | 0 | 1;
    compareTo(to: BigRational | BigInteger | number): -1 | 0 | 1;

    eq(to: number | BigRational): boolean;
    equals(to: number | BigRational): boolean;

    floor(toBigInt?: false): BigRational;
    floor(toBigInt: true): BigInteger;

    geq(than: BigRational | BigInteger | number): boolean;
    greater(than: BigRational | BigInteger | number): boolean;
    greaterOrEquals(than: BigRational | BigInteger | number): boolean;
    gt(than: BigRational | BigInteger | number): boolean;

    isNegative(): boolean;
    isPositive(): boolean;
    isZero: boolean;

    lesser(than: BigRational | BigInteger | number): boolean;
    lesserOrEquals(than: BigRational | BigInteger | number): boolean;
    leq(than: BigRational | BigInteger | number): boolean;
    lt(than: BigRational | BigInteger | number): boolean;

    minus(num: BigRational | string | number): BigRational;
    mod(num: BigRational | BigInteger | number): BigRational;

    multiply(by: BigRational | string | number): BigRational;

    negate(): BigRational;

    neq(to: BigRational | string | number): BigRational;
    notEquals(to: BigRational | string | number): BigRational;

    over(by: BigRational | string | number): BigRational;

    plus(num: BigRational | string | number): BigRational;

    pow(to: BigInteger | number): BigRational;

    reciprocate(): BigRational;

    round(toBigInt?: false): BigRational;
    round(toBigInt: true): BigInteger;

    subtract(num: BigRational | string | number): BigRational;

    times(by: BigRational | string | number): BigRational;

    toDecimal(num: number): string;

    toString(): string;
    valueOf(): number;
  }

  /**
   * Create new BigRational from string
   * eg: "5/4" or "1.25" or "1_1/4"
   * @param num
   */
  export default function (num: string): BigRational;
  /**
   * Create new BigRational from numeric type
   * @param num
   */
  export default function (num: number | BigInteger | BigRational): BigRational;
  /**
   * Create new BigRation from numerator and denominator
   * @param num
   * @param denom
   */
  export default function (
    num: number | string,
    denom: number | string,
  ): BigRational;
  /**
   * Create new BigRational (Zero Value)
   */
  export default function (): BigRational;
}

cseufert avatar Jun 18 '20 06:06 cseufert