Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 122x 151x 29x 122x 90x 90x 32x 144x 144x | type NumberLike = string | String | number | Number;
function isNumberLike(value: unknown): value is NumberLike {
return (
typeof value === 'string' ||
typeof value === 'number' ||
value instanceof String ||
value instanceof Number
);
}
/**
* Converts a value to a finite number, returning undefined if the value is not finite.
*
* @param value - The value to convert to a finite number
* @returns The finite number value, or undefined if the value is not finite
*/
export function toFiniteNumber(
value: NumberLike | undefined
): number | undefined;
export function toFiniteNumber<T extends NumberLike>(
value: ArrayLike<T> | undefined
): number[] | undefined;
export function toFiniteNumber<T extends NumberLike>(
value: T | ArrayLike<T> | undefined
): number | undefined | number[] {
if (value === undefined) {
return undefined;
}
if (isNumberLike(value)) {
const converted = Number(value);
return Number.isFinite(converted) ? converted : undefined;
}
return Array.from(value, (entry) => {
const converted = Number(entry);
return Number.isFinite(converted) ? converted : undefined;
}) as number[];
}
/**
* Coerces DICOM-friendly numeric inputs to number(s).
*
* @param val - The javascript object for the specified element in the metadata
* @returns finite number(s); invalid values are coerced to NaN
*/
export function toNumber(
val: NumberLike | null | undefined
): number | undefined;
export function toNumber<T extends NumberLike>(
val: ArrayLike<T> | Iterable<T>
): number[];
export function toNumber(val: unknown): number | number[] | undefined {
if (val === undefined || val === null) {
return undefined;
}
if (isNumberLike(val)) {
return Number(val);
}
if (Array.isArray(val)) {
return val.map((entry) => Number(entry));
}
if (typeof val === 'object' && Symbol.iterator in val) {
return Array.from(val as Iterable<unknown>, (entry) => Number(entry));
}
return Number(val as NumberLike);
}
export default toNumber;
|