Що таке тип bigint?
Тип bigint - це примітивний числовий тип, який призначений для роботи з цілими числами довільної довжини,
тобто такими великими числами, які не вміщаються у стандартний тип number.
Він з'явився в ECMAScript 2020 (ES11) і підтримується в TypeScript починаючи з версії 3.2.
Особливості типу bigint
- Представляє тільки цілі числа (без дробової частини).
- Може зберігати числа, які виходять за межі безпечного діапазону
number(Number.MAX_SAFE_INTEGER= 2⁵³ − 1). - Має свій синтаксис - літерали
bigintзакінчуються на літеруn.
javascript
let big: bigint = 123456789012345678901234567890n;Як оголосити змінну типу bigint
1. Через літерал з n:
javascript
let id: bigint = 9007199254740993n; // більше за безпечне число2. Через конструктор BigInt():
javascript
let bigFromString: bigint = BigInt("9007199254740993000000000000000");
let bigFromNumber: bigint = BigInt(123);Порівняння з типом number
| Характеристика | number | bigint |
|---|---|---|
| Діапазон | до ±9 007 199 254 740 991 (2^53 - 1) | Без обмежень |
| Тип числа | З плаваючою точкою (float) | Тільки цілі |
| Продуктивність | Швидше | Повільніше |
| Арифметика | Можна змішувати дробові й цілі | Тільки цілі |
| Сумісність | Можна з більшістю API JS | Деякі API не підтримують |
| Змішування типів | Не можна змішувати з bigint | Помилка при bigint + number |
Приклад:
javascript
let a: number = 10;
let b: bigint = 20n;
// console.log(a + b); // Помилка: не можна змішувати number і bigint
console.log(BigInt(a) + b); // Перетвори number у bigintПриклади операцій з bigint
javascript
let bigA = 123456789012345678901234567890n;
let bigB = 10n;
console.log(bigA + bigB); // 123456789012345678901234567900n
console.log(bigA - bigB); // 123456789012345678901234567880n
console.log(bigB ** 5n); // 100000n
console.log(bigA % bigB); // 0nВажливі обмеження
bigintне можна використовувати зMath:
javascript
Math.sqrt(16n); // Помилкаbigintне можна змішувати зnumberнапряму:
javascript
10n + 5; // Помилка- При порівнянні (
<,>,==) - працює, але===вимагає збігу типів:
javascript
5n == 5; // true
5n === 5; // falseКоли варто використовувати bigint
Використовуй bigint, коли:
- Потрібно працювати з великими цілими числами, що перевищують діапазон
number:
- криптографія, хешування
- фінансові розрахунки з великими сумами
- робота з ідентифікаторами (ID, timestamp)
- лічильники, які можуть переповнитися
- Потрібна точність, а не швидкість обчислень.
Приклад порівняння точності
javascript
let normal = 9007199254740991; // MAX_SAFE_INTEGER
console.log(normal + 1); // 9007199254740992
console.log(normal + 2); // 9007199254740992 (втрачається точність)
let big = 9007199254740991n;
console.log(big + 1n); // 9007199254740992n
console.log(big + 2n); // 9007199254740993nКоротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.