data-unit
Version:
Simple TypeScript/ES2017 classes to represent unit values (like time/data size)
35 lines (34 loc) • 1.29 kB
TypeScript
export interface UnitKeywords<T> {
[key: string]: T;
}
export declare abstract class Amount<U extends number, A extends Amount<U, A>> {
readonly value: number;
readonly unit: U;
readonly previousUnit: U;
readonly nextUnit: 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;
toHuman(): A;
toHumanString(): string;
toString(): string;
}