JavaScript BigInt.toString() — велике число рядком
Метод toString() перетворює BigInt на рядок. Суфікс n у результат не входить.
Загальний опис
Це головний спосіб віддати велике число назовні. JSON.stringify() на BigInt кидає TypeError — і це одна з найнеприємніших несподіванок при роботі з великими id.
Обхід стандартний: перетворити на рядок перед серіалізацією. Сервер прийме його як рядок, і точність не втратиться.
Аргументом можна задати основу числення: toString(16) дасть шістнадцятковий запис.
- Нотатка
-
автор: NagarDJSON.stringify()наBigIntкидає помилку. Це не забудькуватість авторів: віддати його числом означало б утратити точність, а віддати рядком — змінити тип. Тому рішення лишили за тобою.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| toString | 67+ | 68+ | 14+ | 54+ | 79+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| toString | 67+ | yes | yes | 14+ |
Приклади
+ запропонувати свій приклад у пісочниці
JSON не вміє BigInt — перетворюємо самі.
const id = 9007199254740993n;
console.log(id.toString()); // '9007199254740993' — без «n»
console.log(id.toString(16)); // шістнадцятково
// а це кине TypeError
// JSON.stringify({ id });
// обхід: рядком
console.log(JSON.stringify({ id: id.toString() }));
// або через replacer
console.log(JSON.stringify({ id }, (key, value) =>
typeof value === 'bigint' ? value.toString() : value
));
Коментарі
Коментарів ще немає — будьте першим!