data-unit
Version:
Simple TypeScript/ES2017 classes to represent unit values (like time/data size)
28 lines (27 loc) • 1.12 kB
TypeScript
export declare abstract class Amount<U extends number, A extends Amount<U, A>> {
readonly value: number;
readonly unit: U;
protected abstract exchangeRates: {
unit: U;
multiplier: number;
}[];
constructor(value: number, unit: U);
protected create(value: number, unit: U): A;
protected unaryOp(op: (a: number) => number): A;
protected binaryOp(value: number | string | A, op: (a: number, b: number) => number): A;
protected ternaryOp(value1: number | string | A, value2: number | string | A, op: (a: number, b: number, c: number) => number): A;
convert(unit: U): A;
as(unit?: U, decimals?: number): number;
div(value: number | string | A): A;
mul(value: number | string | A): A;
plus(value: number | string | A): A;
minus(value: number | string | A): A;
floor(): A;
ceil(): A;
round(decimals?: number): A;
clamp(min: number | string | A, max: number | string | A): A;
atMost(max: number | string | A): A;
atLeast(min: number | string | A): A;
unitToString(): string;
toString(): string;
}