@adam-rocska/units-and-measurement
v1.0.0
Published
A TypeScript library for handling units and measurements with support for multiple formats (tuples, objects, strings, dimensions) and operations (arithmetic, comparison). Modular, tree-shakable, and designed for safe, boilerplate-free usage.
Downloads
353
Maintainers
Keywords
Readme
TypeScript Units & Measurement
| Aspect | Badge | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Minified | | | Minified + gzip | | | Dependency Count | | | Tree-shaking Support | |
A library for handling units and measurements in TypeScript. The library is broken down into several modules, each of which can be used independently.
@adam-rocska/units-and-measurement
The main module providing all the units necessary or convenient for working with units and measurements safely without boilerplate.
Measurements may be expressed as:
- tuples: Simplest form:
[15, "px"]
. - objects: Simplest form:
{ value: 15, unit: "px" }
. - strings: Simplest form:
"15px"
. Yes. THAT simple. - dimension: Simplest form when using a known provided
dimension:
inches(11)
.
where dimensions are a special monad of an object representation.
Utilities provided for measurements:
- type predicates: They help identify
any
value as a general or specific type of measurement. - factory utilities: called simply
measurement
, specialized by the respective specifier namespace or used in its general form. Not necessary but useful in many cases to reduce boilerplates. - value and unit readers: They help extract the value or unit from a measurement, let it be a general or specific type of measurement.
- toFixed and toPrecision: Provide alternatives for the
Number
type'stoFixed
andtoPrecision
methods on both specific and generic measurements.
@adam-rocska/units-and-measurement/operations
A module providing convenient utilities to perform operations on measurements. It includes the following:
- arithmetic operations: addition, subtraction, multiplication, division, exponentiation, root and logarithm.
- comparison operations
- a utility for general purpose arithmetic operations
- a utility for general purpose logical operations
@adam-rocska/units-and-measurement/${DIMENSION}
Every dimension submodule provides the following:
- Unit symbol type predicates
- List of known unit symbols
- Unit symbols as types.
- The dimension object, as anyone would provide one using
@adam-rocska/units-and-measurement
- Aliases for the dimension factories.
Example
const paperWidth = inches(5.5);
const paperHeight = inches(11);
// toFixed, to avoid floating point errors
if (areEqual(toFixed(paperWidth.cm, 2), centimeters(13.97))) {
console.log("The paper width is 13.97 cm.");
}