Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке тип bigint?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Тип `bigint` - це **примітивний числовий тип**, призначений для роботи з **цілими числами довільної довжини**, тобто такими великими числами, які **не вміщаються** у стандартний тип `number`. **Ключове:** він з'явився в ECMAScript 2020 (ES11) і підтримується в TypeScript починаючи з версії 3.2.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняТип `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` | Характеристика | `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 ``` --- ### Важливі обмеження 1. `bigint` **не можна використовувати** з `Math`: ```javascript Math.sqrt(16n); // Помилка ``` 2. `bigint` **не можна змішувати з** `number` **напряму**: ```javascript 10n + 5; // Помилка ``` 3. При порівнянні (`<`, `>`, `==`) - працює, але `===` вимагає збігу типів: ```javascript 5n == 5; // true 5n === 5; // false ``` --- ### Коли варто використовувати `bigint` Використовуй `bigint`, коли: 1. Потрібно працювати з **великими цілими числами**, що перевищують діапазон `number`: - криптографія, хешування - фінансові розрахунки з великими сумами - робота з ідентифікаторами (ID, timestamp) - лічильники, які можуть переповнитися 2. Потрібна **точність**, а не швидкість обчислень. --- ### Приклад порівняння точності ```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 ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.