Skip to main content

Що таке тип bigint?

Тип bigint - це примітивний числовий тип, який призначений для роботи з цілими числами довільної довжини, тобто такими великими числами, які не вміщаються у стандартний тип number.

Він з'явився в ECMAScript 2020 (ES11) і підтримується в TypeScript починаючи з версії 3.2.


Особливості типу bigint

  1. Представляє тільки цілі числа (без дробової частини).
  2. Може зберігати числа, які виходять за межі безпечного діапазону number (Number.MAX_SAFE_INTEGER = 2⁵³ − 1).
  3. Має свій синтаксис - літерали 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

Характеристикаnumberbigint
Діапазондо ±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

Важливі обмеження

  1. bigint не можна використовувати з Math:
javascript
Math.sqrt(16n); // Помилка
  1. bigint не можна змішувати з number напряму:
javascript
10n + 5; // Помилка
  1. При порівнянні (<, >, ==) - працює, але === вимагає збігу типів:
javascript
5n == 5; // true 5n === 5; // false

Коли варто використовувати bigint

Використовуй bigint, коли:

  1. Потрібно працювати з великими цілими числами, що перевищують діапазон number:
  • криптографія, хешування
  • фінансові розрахунки з великими сумами
  • робота з ідентифікаторами (ID, timestamp)
  • лічильники, які можуть переповнитися
  1. Потрібна точність, а не швидкість обчислень.

Приклад порівняння точності

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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.