Sha256: 7ca6bb19f016eadcff4eb8993a37ba89be7b42bdf0dbc630d0b0db34e5fc7df0

Contents?: true

Size: 1.92 KB

Versions: 28

Compression:

Stored size: 1.92 KB

Contents

import type {IsNever} from '../is-never';
import type {UnknownArray} from '../unknown-array';
import type {StringToNumber} from './string';

/**
Returns the absolute value of a given value.

@example
```
NumberAbsolute<-1>;
//=> 1

NumberAbsolute<1>;
//=> 1

NumberAbsolute<NegativeInfinity>
//=> PositiveInfinity
```
*/
export type NumberAbsolute<N extends number> = `${N}` extends `-${infer StringPositiveN}` ? StringToNumber<StringPositiveN> : N;

/**
Check whether the given type is a number or a number string.

Supports floating-point as a string.

@example
```
type A = IsNumberLike<'1'>;
//=> true

type B = IsNumberLike<'-1.1'>;
//=> true

type C = IsNumberLike<1>;
//=> true

type D = IsNumberLike<'a'>;
//=> false
*/
export type IsNumberLike<N> =
	N extends number ? true
		:	N extends `${number}`
			? true
			: N extends `${number}.${number}`
				? true
				: false;

/**
Returns the minimum number in the given union of numbers.

Note: Just supports numbers from 0 to 999.

@example
```
type A = UnionMin<3 | 1 | 2>;
//=> 1
```
*/
export type UnionMin<N extends number> = InternalUnionMin<N>;

/**
The actual implementation of `UnionMin`. It's private because it has some arguments that don't need to be exposed.
*/
type InternalUnionMin<N extends number, T extends UnknownArray = []> =
	T['length'] extends N
		? T['length']
		: InternalUnionMin<N, [...T, unknown]>;

/**
Returns the maximum number in the given union of numbers.

Note: Just supports numbers from 0 to 999.

@example
```
type A = UnionMax<1 | 3 | 2>;
//=> 3
```
*/
export type UnionMax<N extends number> = InternalUnionMax<N>;

/**
The actual implementation of `UnionMax`. It's private because it has some arguments that don't need to be exposed.
*/
type InternalUnionMax<N extends number, T extends UnknownArray = []> =
	IsNever<N> extends true
		? T['length']
		:	T['length'] extends N
			? InternalUnionMax<Exclude<N, T['length']>, T>
			: InternalUnionMax<N, [...T, unknown]>;

Version data entries

28 entries across 28 versions & 2 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.25 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.24 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.23 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.22 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.21 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.20 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.19 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.18 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.17 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.16 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.15 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.14 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.13 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.12 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.11 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.10 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.9 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.8 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts
clapton-0.0.7 lib/clapton/javascripts/node_modules/type-fest/source/internal/numeric.d.ts