1.2.2 • Published 1 year ago
@coderspirit/nominal-inputs v1.2.2
@coderspirit/nominal-inputs
Nominal-Inputs is an extension for Nominal.
Install instructions
Node
# With NPM
npm install @coderspirit/nominal-inputs
# Or with PNPM
pnpm add --save-dev @coderspirit/nominal-inputs
# Or with Yarn:
yarn add --dev @coderspirit/nominal-inputsInput Types
Input types are specifically designed to be used for function parameters, and we have to use them in a very specific way. Examples below.
IntegerInput<N>
import type { IntegerInput } from '@coderspirit/nominal-inputs'
// Notice how we have to declare a generic type parameter in order to use
// `IntegerInput`
function onlyAcceptsIntegers<N extends number>(n: IntegerInput<N>): number {
return n
}
// Using the function
onlyAcceptsIntegers(42) // All good :D
onlyAcceptsIntegers(0.5) // Type Error!SizedStringInput<S>
import type { SizedStringInput } from '@coderspirit/nominal-inputs'
function onlyAcceptsThreeCharStrings<S extends string>(s: SizedStringInput<S, 3>): void {
console.log(s)
}
onlyAcceptsThreeCharStrings("abc") // All good :D
onlyAcceptsThreeCharStrings("ab") // Type Error!
onlyAcceptsThreeCharStrings("abcd") // Type Error!Other Input types
NegativeInput<N>NegativeIntegerInput<N>PositiveInput<N>PositiveIntegerInput<N>
Tagged Types
The tagged types introduced by this package are not "special" as the previously
referred "input types", but they rely on the powerful features of Nominal.
Use them to track properties that you already verified either statically or at runtime, so you can avoid having to check them again.
TaggedFloat<N>TaggedInteger<N>TaggedNegative<N>TaggedNegativeFloat<N>TaggedNegativeInteger<N>TaggedPositive<N>TaggedPositiveFloat<N>TaggedPositiveIntegger<N>