0.6.0 • Published 5 years ago
@perfective/real v0.6.0
Perfective Real Numbers
The @perfective/real package declares types and functions to work with real numbers,
including the JavaScript
Number class.
Read the full documentation on the Github.
Number
- Type guards:
isNumber<T>(value: number | T): value is numberisNotNumber<T>(value: number | T): value is T
- Unit functions:
negative(value: number): number
Numbermethods:exponential(fraction: Digits): Unary<number, string>fixed(fraction: Digits): Unary<number, string>precision(precision: Precision): Unary<number, string>
- Arithmetic functions:
sum(augend: number, addend: number): numberdifference(minuend: number, subtrahend: number): numberproduct(multiplier: number, multiplicand: number): numberquotient(dividend: number, divisor: number): numberremainder(dividend: number, divisor: number): number
- Set functions:
maximum(values: readonly number[]): number | nullminimum(values: readonly number[]): number | null
Integer
- Nominal types (aliases of
number):IntegerSafeIntegerPositiveIntegerNonNegativeIntegerNonPositiveIntegerNegativeInteger
- Predicates:
isInteger(value: number): booleanisSafeInteger(value: number): booleanisNonNegativeInteger(value: number): booleanisPositiveInteger(value: number): booleanisNonPositiveInteger(value: number): booleanisNegativeInteger(value: number): boolean
Natural
- Types:
Natural— a nominal type based on thenumbertype.
- Type Guards:
isNatural<T>(value: number | T): value is Natural.
Base (Radix)
The parseFloat(), parseInt(), and Number.prototype.toString() functions are combined
into polymorphic shortcuts for readability:
- Decimal (radix = 10):
decimal(value: number): stringdecimal(value: string): number | null
- Binary (radix = 2):
binary(value: Integer): stringbinary(value: string): Integer | null
- Octal (radix = 8):
octal(value: Integer): stringoctal(value: string): Integer | null
- Hexadecimal (radix = 16):
hexadecimal(value: Integer): stringhexadecimal(value: string): Integer | null
Order
- Predicates:
isEqualTo(value: number): Predicate<number>isNotEqualTo(value: number): Predicate<number>isGreaterThan(value: number): Predicate<number>isGreaterThanOrEqualTo(value: number): Predicate<number>isLessThan(value: number): Predicate<number>isLessThanOrEqualTo(value: number): Predicate<number>
- Sorting:
ascending(a: number, b: number): numberdescending(a: number, b: number): number
Interval
- Types:
Intervalrepresents an interval fromInterval.mintoInterval.max.
- Unit functions:
interval(min: number, max: number): Interval | nullintervalFromPair(pair: readonly [number, number]): Interval | nullintervalFromValues(values: number[]): Interval | nullintervalFromNullable(min: number | null, max: number | null): Interval | null
- Predicates:
isInInterval(interval: Interval): Predicate<number>isInOpenInterval(interval: Interval): Predicate<number>isInLeftOpenInterval(interval: Interval): Predicate<number>isInRightOpenInterval(interval: Interval): Predicate<number>
Enum
- Types:
Enum<T extends number | string>— a record generated based on theenumkeyword;Member<T extends number | string>— key of an enum.
- Functions:
members<T extends number | string, E extends Enum<T>>(value: E): Member<T>[]— returns a list ofenumkeys.
Bitmasks
- Types:
Flags<T extends number = number>— anenumwithnumbervalues;Flag<T extends Flags>— a key of aFlagsenum.Bitmask<T extends Flags | number = number>— a combination of bits.
- Unit function:
bitmask<T extends Flags | number = number>(flags: Bitmask<T>[]): Bitmask— creates a bitmask by raising all given flags.
- Predicates:
isFlagOn<T extends Flags | number>(bitmask: Bitmask<T>, flag: Bitmask<T>): boolean— returns true when given flags are raised on a bitmask.hasFlagOn<T extends Flags | number>(flag: Bitmask<T>): Unary<Bitmask<T>, boolean>— creates a curried version of the hasRaised() function.
- Other:
raisedFlags<T extends number>(type: object, bitmask: Bitmask<T>): Member<T>[]— returns flags that are raised on the given bitmask.
0.6.0
5 years ago
0.5.1
5 years ago
0.5.0
5 years ago
0.4.1
5 years ago
0.4.0
5 years ago
0.4.0-beta
5 years ago
0.4.0-alpha.2
5 years ago
0.4.0-alpha.1
5 years ago
0.4.0-alpha
5 years ago
0.3.0
5 years ago
0.2.1
5 years ago
0.2.0
5 years ago
0.1.1
5 years ago
0.1.0
5 years ago