Take a partial set of UnitTerms, and fills in the missing exponents with 0.
Divide two Unit types, A/B (by subtracting the exponents).
Divide two UnitTerms, A/B
Invert a UnitTerms (by negating the exponents).
Multiply two Unit types (by adding the exponents).
Multiply two UnitTerms (by adding the exponents.)
An object with keys being the name of Primitive types and the values being exponents. All values are required; supply zero for values not supplied.
See PUnitTerms for a partial set where types can be left undefined.
Define a unit alias, which can convert to/from a corresponding standard unprefixed SI unit.
Define a derived type.
The numbers in the keys are exponents for primitive types. They are taken as type literals,
This ensures, for example, that the types of U.velocity and U.acceleration are distinct.
const U.velocity = defineUnit({distance: 1, time: -1});
const U.acceleration = defineUnit({distance: 1, time: -2});
Results in types of:
type U.velocity = Unit<{distance: 1, time: -1}>
type U.acceleration = Unit<{distance: 1, time: -2}>
The key defining the type composition
Additional attributes describing the type.
Additional names to use for this type, e.g. newton.
Get a unit by name.
To process a # + unit into standard unprefixed SI, do:
const [siVal, siUnit] = getUnit(unitName).toSI(val);
To just get the standard SI unit, do:
const siUnit = getUnit(unitName).si;
if true, only unscaled SI units are returned.
Generated using TypeDoc
Representation and manipulation of physical units.
These are based on SI, and in particular the (Guide for the Use of the International System of Units (SI))https://physics.nist.gov/cuu/pdf/sp811.pdf(https://physics.nist.gov/cuu/pdf/sp811.pdf]) However, this does not try to be complete, and extends the set of base units somewhat to aid clarity (for example, 'cycles/revolutions') while preserving semantics and standardized presentation. Having units that map to SI '1' is not very helpful sometimes.
See the Units.Units namespace for definitions of individual units.