directus

Форк
0
/
parse-numeric-string.ts 
26 строк · 722.0 Байт
1
import type { NumericValue } from '@directus/types';
2

3
export function parseNumericString(stringValue: string): NumericValue | null {
4
	let number: NumericValue = Number(stringValue);
5

6
	if (isNaN(number) || !Number.isFinite(number)) {
7
		return null; // invalid numbers
8
	}
9

10
	if (number > Number.MAX_SAFE_INTEGER || number < Number.MIN_SAFE_INTEGER) {
11
		try {
12
			number = BigInt(stringValue);
13
		} catch {
14
			// BigInt parsing failed, e.g. it was a float larger than MAX_SAFE_INTEGER
15
			return null;
16
		}
17
	}
18

19
	// casting parsed value back to string should be equal the original value
20
	// (prevent unintended number parsing, e.g. String(7) !== "ob111")
21
	if (String(number) !== stringValue) {
22
		return null;
23
	}
24

25
	return number;
26
}
27

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.