@rogolev/value 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/docs/classes/Expect/toBe.md +61 -0
  3. package/docs/classes/Expect/toBeArray.md +52 -0
  4. package/docs/classes/Expect/toBeAssoc.md +53 -0
  5. package/docs/classes/Expect/toBeBigInt.md +52 -0
  6. package/docs/classes/Expect/toBeBool.md +53 -0
  7. package/docs/classes/Expect/toBeBoolean.md +53 -0
  8. package/docs/classes/Expect/toBeChar.md +53 -0
  9. package/docs/classes/Expect/toBeClass.md +53 -0
  10. package/docs/classes/Expect/toBeFloat.md +53 -0
  11. package/docs/classes/Expect/toBeFunction.md +52 -0
  12. package/docs/classes/Expect/toBeInfinity.md +53 -0
  13. package/docs/classes/Expect/toBeInt.md +53 -0
  14. package/docs/classes/Expect/toBeInteger.md +53 -0
  15. package/docs/classes/Expect/toBeList.md +53 -0
  16. package/docs/classes/Expect/toBeNaN.md +53 -0
  17. package/docs/classes/Expect/toBeNull.md +51 -0
  18. package/docs/classes/Expect/toBeNumber.md +52 -0
  19. package/docs/classes/Expect/toBeNumeric.md +53 -0
  20. package/docs/classes/Expect/toBeObject.md +52 -0
  21. package/docs/classes/Expect/toBeScalar.md +53 -0
  22. package/docs/classes/Expect/toBeString.md +52 -0
  23. package/docs/classes/Expect/toBeSymbol.md +53 -0
  24. package/docs/classes/Expect/toBeUndefined.md +54 -0
  25. package/docs/classes/Expect/toEqual.md +69 -0
  26. package/docs/classes/Expect/toStrictEqual.md +70 -0
  27. package/docs/classes/Expect.md +87 -0
  28. package/docs/classes/Type/expectArray.md +63 -0
  29. package/docs/classes/Type/expectAssoc.md +65 -0
  30. package/docs/classes/Type/expectBigInt.md +63 -0
  31. package/docs/classes/Type/expectBool.md +65 -0
  32. package/docs/classes/Type/expectBoolean.md +65 -0
  33. package/docs/classes/Type/expectChar.md +63 -0
  34. package/docs/classes/Type/expectClass.md +63 -0
  35. package/docs/classes/Type/expectFloat.md +68 -0
  36. package/docs/classes/Type/expectFunction.md +63 -0
  37. package/docs/classes/Type/expectInfinity.md +65 -0
  38. package/docs/classes/Type/expectInt.md +64 -0
  39. package/docs/classes/Type/expectInteger.md +64 -0
  40. package/docs/classes/Type/expectList.md +63 -0
  41. package/docs/classes/Type/expectNaN.md +63 -0
  42. package/docs/classes/Type/expectNull.md +63 -0
  43. package/docs/classes/Type/expectNumber.md +63 -0
  44. package/docs/classes/Type/expectNumeric.md +63 -0
  45. package/docs/classes/Type/expectObject.md +64 -0
  46. package/docs/classes/Type/expectScalar.md +63 -0
  47. package/docs/classes/Type/expectString.md +63 -0
  48. package/docs/classes/Type/expectSymbol.md +63 -0
  49. package/docs/classes/Type/expectUndefined.md +63 -0
  50. package/docs/classes/Type.md +101 -2
  51. package/docs/classes.md +2 -1
  52. package/docs/helpers/expect.md +58 -0
  53. package/docs/helpers/expect_array.md +63 -0
  54. package/docs/helpers/expect_assoc.md +65 -0
  55. package/docs/helpers/expect_bigint.md +63 -0
  56. package/docs/helpers/expect_bool.md +65 -0
  57. package/docs/helpers/expect_boolean.md +65 -0
  58. package/docs/helpers/expect_char.md +63 -0
  59. package/docs/helpers/expect_class.md +63 -0
  60. package/docs/helpers/expect_float.md +65 -0
  61. package/docs/helpers/expect_function.md +63 -0
  62. package/docs/helpers/expect_infinity.md +65 -0
  63. package/docs/helpers/expect_int.md +65 -0
  64. package/docs/helpers/expect_integer.md +65 -0
  65. package/docs/helpers/expect_list.md +63 -0
  66. package/docs/helpers/expect_nan.md +63 -0
  67. package/docs/helpers/expect_null.md +63 -0
  68. package/docs/helpers/expect_number.md +63 -0
  69. package/docs/helpers/expect_numeric.md +63 -0
  70. package/docs/helpers/expect_object.md +64 -0
  71. package/docs/helpers/expect_scalar.md +63 -0
  72. package/docs/helpers/expect_string.md +63 -0
  73. package/docs/helpers/expect_symbol.md +63 -0
  74. package/docs/helpers/expect_undefined.md +64 -0
  75. package/docs/helpers/is_equal.md +75 -0
  76. package/docs/helpers.md +47 -0
  77. package/index.mjs +25 -0
  78. package/package.json +1 -2
  79. package/src/classes/Expect.mjs +1445 -0
  80. package/src/classes/Type.mjs +2739 -1284
  81. package/src/constants.mjs +83 -14
  82. package/src/helpers/expect.mjs +44 -0
  83. package/src/helpers/expect_array.mjs +66 -0
  84. package/src/helpers/expect_assoc.mjs +66 -0
  85. package/src/helpers/expect_bigint.mjs +66 -0
  86. package/src/helpers/expect_bool.mjs +66 -0
  87. package/src/helpers/expect_boolean.mjs +57 -0
  88. package/src/helpers/expect_char.mjs +66 -0
  89. package/src/helpers/expect_class.mjs +66 -0
  90. package/src/helpers/expect_float.mjs +66 -0
  91. package/src/helpers/expect_function.mjs +66 -0
  92. package/src/helpers/expect_infinity.mjs +66 -0
  93. package/src/helpers/expect_int.mjs +66 -0
  94. package/src/helpers/expect_integer.mjs +57 -0
  95. package/src/helpers/expect_list.mjs +66 -0
  96. package/src/helpers/expect_nan.mjs +66 -0
  97. package/src/helpers/expect_null.mjs +66 -0
  98. package/src/helpers/expect_number.mjs +66 -0
  99. package/src/helpers/expect_numeric.mjs +66 -0
  100. package/src/helpers/expect_object.mjs +67 -0
  101. package/src/helpers/expect_scalar.mjs +66 -0
  102. package/src/helpers/expect_string.mjs +65 -0
  103. package/src/helpers/expect_symbol.mjs +66 -0
  104. package/src/helpers/expect_undefined.mjs +66 -0
  105. package/src/helpers/is_equal.mjs +94 -0
  106. package/tests/classes/Expect/toBe.test.mjs +60 -0
  107. package/tests/classes/Expect/toBeArray.test.mjs +46 -0
  108. package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
  109. package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
  110. package/tests/classes/Expect/toBeBool.test.mjs +48 -0
  111. package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
  112. package/tests/classes/Expect/toBeChar.test.mjs +46 -0
  113. package/tests/classes/Expect/toBeClass.test.mjs +48 -0
  114. package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
  115. package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
  116. package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
  117. package/tests/classes/Expect/toBeInt.test.mjs +48 -0
  118. package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
  119. package/tests/classes/Expect/toBeList.test.mjs +46 -0
  120. package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
  121. package/tests/classes/Expect/toBeNull.test.mjs +46 -0
  122. package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
  123. package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
  124. package/tests/classes/Expect/toBeObject.test.mjs +47 -0
  125. package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
  126. package/tests/classes/Expect/toBeString.test.mjs +46 -0
  127. package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
  128. package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
  129. package/tests/classes/Expect/toEqual.test.mjs +66 -0
  130. package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
  131. package/tests/classes/Type.test.mjs +1320 -1262
  132. package/tests/helpers/array.test.mjs +58 -58
  133. package/tests/helpers/expect.test.mjs +95 -0
  134. package/tests/helpers/expect_array.test.mjs +71 -0
  135. package/tests/helpers/expect_assoc.test.mjs +61 -0
  136. package/tests/helpers/expect_bigint.test.mjs +63 -0
  137. package/tests/helpers/expect_bool.test.mjs +59 -0
  138. package/tests/helpers/expect_boolean.test.mjs +61 -0
  139. package/tests/helpers/expect_char.test.mjs +63 -0
  140. package/tests/helpers/expect_class.test.mjs +64 -0
  141. package/tests/helpers/expect_float.test.mjs +64 -0
  142. package/tests/helpers/expect_function.test.mjs +65 -0
  143. package/tests/helpers/expect_infinity.test.mjs +62 -0
  144. package/tests/helpers/expect_int.test.mjs +57 -0
  145. package/tests/helpers/expect_integer.test.mjs +59 -0
  146. package/tests/helpers/expect_list.test.mjs +73 -0
  147. package/tests/helpers/expect_nan.test.mjs +57 -0
  148. package/tests/helpers/expect_null.test.mjs +57 -0
  149. package/tests/helpers/expect_number.test.mjs +57 -0
  150. package/tests/helpers/expect_numeric.test.mjs +57 -0
  151. package/tests/helpers/expect_object.test.mjs +63 -0
  152. package/tests/helpers/expect_scalar.test.mjs +72 -0
  153. package/tests/helpers/expect_string.test.mjs +65 -0
  154. package/tests/helpers/expect_symbol.test.mjs +66 -0
  155. package/tests/helpers/expect_undefined.test.mjs +59 -0
  156. package/tests/helpers/is_equal.test.mjs +110 -0
@@ -1,1284 +1,2739 @@
1
- import empty from '../helpers/empty.mjs';
2
- import is_array from '../helpers/is_array.mjs';
3
- import is_assoc from '../helpers/is_assoc.mjs';
4
- import is_bigint from '../helpers/is_bigint.mjs';
5
- import is_bool from '../helpers/is_bool.mjs';
6
- import is_class from '../helpers/is_class.mjs';
7
- import is_float from '../helpers/is_float.mjs';
8
- import is_function from '../helpers/is_function.mjs';
9
- import is_infinity from '../helpers/is_infinity.mjs';
10
- import is_int from '../helpers/is_int.mjs';
11
- import is_list from '../helpers/is_list.mjs';
12
- import is_nan from '../helpers/is_nan.mjs';
13
- import is_null from '../helpers/is_null.mjs';
14
- import is_number from '../helpers/is_number.mjs';
15
- import is_numeric from '../helpers/is_numeric.mjs';
16
- import is_object from '../helpers/is_object.mjs';
17
- import is_scalar from '../helpers/is_scalar.mjs';
18
- import is_string from '../helpers/is_string.mjs';
19
- import is_symbol from '../helpers/is_symbol.mjs';
20
- import is_undefined from '../helpers/is_undefined.mjs';
21
-
22
- /**
23
- * Класс `Type` предоставляет методы для проверки типов данных в JavaScript.
24
- *
25
- * ### Описание
26
- *
27
- * Класс `Type` включает в себя статические методы, которые позволяют проверять типы различных значений.
28
- * Эти методы охватывают широкий спектр типов данных, включая примитивы, объекты, массивы, функции и специальные значения.
29
- *
30
- * ### Методы
31
- *
32
- * - `Type.isEmpty(value)` - Проверяет, является ли переменная пустой.
33
- * - `Type.isArray(value)` - Проверяет, является ли переданное значение массивом или ассоциативным массивом.
34
- * - `Type.isAssoc(value)` - Проверяет, является ли значение ассоциативным массивом.
35
- * - `Type.isBigInt(value)` - Проверяет, является ли значение типом `bigint`.
36
- * - `Type.isBool(value)` - Проверяет, является ли переданное значение логическим типом (`boolean`).
37
- * - `Type.isBoolean(value)` - Проверяет, является ли переданное значение логическим типом (`boolean`).
38
- * - `Type.isClass(value)` - Проверяет, является ли переданная переменная классом.
39
- * - `Type.isFloat(value)` - Проверяет, является ли значение числом с плавающей точкой.
40
- * - `Type.isFunction(value)` - Проверяет, что значение является функцией, исключая классы.
41
- * - `Type.isInfinity(value)` - Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
42
- * - `Type.isInt(value)` - Проверяет, является ли значение целым числом.
43
- * - `Type.isInteger(value)` - Проверяет, является ли значение целым числом.
44
- * - `Type.isList(value)` - Проверяет, является ли значение списком.
45
- * - `Type.isNaN(value)` - Проверяет, является ли значение NaN.
46
- * - `Type.isNull(value)` - Проверяет, является ли значение `null`.
47
- * - `Type.isNumber(value)` - Проверяет, является ли значение числом.
48
- * - `Type.isNumeric(value)` - Проверяет, является ли значение числом или числовой строкой.
49
- * - `Type.isObject(value)` - Проверяет, является ли переданная переменная объектом.
50
- * - `Type.isScalar(value)` - Проверяет, является ли значение скалярным.
51
- * - `Type.isString(value)` - Проверяет, является ли значение строкой.
52
- * - `Type.isSymbol(value)` - Проверяет, является ли значение символом.
53
- * - `Type.isUndefined(value)` - Проверяет, является ли значение `undefined`.
54
- *
55
- * ### Примеры использования
56
- *
57
- * ```js
58
- * // Проверка пустых значений
59
- * Type.isEmpty(null); // true
60
- * Type.isEmpty(''); // true
61
- *
62
- * // Проверка массивов и ассоциативных массивов
63
- * Type.isArray([1, 2, 3]); // true
64
- * Type.isArray({ foo: 'bar' }); // true
65
- *
66
- * // Проверка логических значений
67
- * Type.isBool(true); // true
68
- * Type.isBoolean(false); // true
69
- *
70
- * // Проверка чисел и числовых строк
71
- * Type.isNumber(42); // true
72
- * Type.isNumeric('42'); // true
73
- *
74
- * // Проверка объектов и символов
75
- * Type.isObject({}); // true
76
- * Type.isSymbol(Symbol('symbol')); // true
77
- *
78
- * // Проверка функций и классов
79
- * function test() {}
80
- * class MyClass {}
81
- * Type.isFunction(test); // true
82
- * Type.isClass(MyClass); // true
83
- * ```
84
- */
85
- class Type {
86
- /**
87
- * Проверяет, является ли переменная пустой.
88
- *
89
- * ### Описание
90
- *
91
- * Метод `Type.isEmpty` используется для проверки, является ли переменная пустой. Пустыми считаются значения `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект.
92
- *
93
- * ### Параметры
94
- *
95
- * - `value` (any)
96
- * Переменная, которую необходимо проверить на пустоту.
97
- *
98
- * ### Возвращаемое значение
99
- *
100
- * Возвращает `true`, если переменная пустая, и `false` в противном случае.
101
- *
102
- * ### Примеры использования
103
- *
104
- * 1. Проверка пустых значений:
105
- *
106
- * ```js
107
- * const result1 = Type.isEmpty(null);
108
- * // Результат: true
109
- *
110
- * const result2 = Type.isEmpty(undefined);
111
- * // Результат: true
112
- *
113
- * const result3 = Type.isEmpty('');
114
- * // Результат: true
115
- *
116
- * const result4 = Type.isEmpty(0);
117
- * // Результат: true
118
- *
119
- * const result5 = Type.isEmpty(false);
120
- * // Результат: true
121
- *
122
- * const result6 = Type.isEmpty([]);
123
- * // Результат: true
124
- *
125
- * const result7 = Type.isEmpty({});
126
- * // Результат: true
127
- * ```
128
- *
129
- * 2. Проверка непустых значений:
130
- *
131
- * ```js
132
- * const result1 = Type.isEmpty('example');
133
- * // Результат: false
134
- *
135
- * const result2 = Type.isEmpty(123);
136
- * // Результат: false
137
- *
138
- * const result3 = Type.isEmpty(true);
139
- * // Результат: false
140
- *
141
- * const result4 = Type.isEmpty([1, 2, 3]);
142
- * // Результат: false
143
- *
144
- * const result5 = Type.isEmpty({ key: 'value' });
145
- * // Результат: false
146
- * ```
147
- *
148
- * @param {any} value Переменная, которую необходимо проверить на пустоту.
149
- * @returns {boolean} Возвращает `true`, если переменная пустая, и `false` в противном случае.
150
- */
151
- static isEmpty(value) {
152
- return empty(value);
153
- }
154
-
155
- /**
156
- * Проверяет, является ли переданное значение массивом или ассоциативным массивом (объектом с ключами и значениями).
157
- *
158
- * ### Описание
159
- *
160
- * В JavaScript массивы и объекты имеют разные структуры и предназначения:
161
- *
162
- * - Массивы (Array) являются упорядоченными коллекциями элементов, которые могут быть индексированы.
163
- * - Объекты (Object) содержат пары "ключ-значение", которые могут быть неупорядоченными.
164
- *
165
- * Этот метод проверяет, является ли переданное значение обычным массивом (например, `[1, 2, 3]`),
166
- * либо ассоциативным массивом (объектом с парами "ключ-значение", например, `{foo: 'bar'}`).
167
- *
168
- * ### Алгоритм работы метода
169
- *
170
- * 1. Сначала проверяется, является ли переданное значение обычным массивом с помощью встроенного метода `Array.isArray(value)`. Если это массив, метод сразу возвращает `true`.
171
- *
172
- * 2. Если переменная не является массивом, то выполняются дополнительные проверки:
173
- *
174
- * - Проверяется, что значение не равно `null` (так как `null` в JavaScript также является объектом, но не является ни массивом, ни объектом с парами "ключ-значение").
175
- * - Проверяется, что значение является объектом JavaScript (с помощью `typeof value === 'object'`).
176
- * - Проверяется, что прототип объекта совпадает с `Object.prototype` (это объект, от которого наследуются все объекты в JavaScript) или является `null` (это означает, что объект был создан с помощью `Object.create(null)` и не имеет прототипа).
177
- * - Исключаются массивоподобные объекты (например, `arguments`, `NodeList`), путем проверки, что свойство `length` не является собственным свойством объекта.
178
- * - Дополнительно проверяется, что объект является простым (его конструктор равен `Object`), а также исключаются встроенные объекты (`Math`, `JSON`, `Reflect`, `Intl`), для которых метод возвращает `true`.
179
- *
180
- * ### Параметры
181
- *
182
- * - `value` (any)
183
- * Проверяемая переменная.
184
- *
185
- * ### Возвращаемое значение
186
- *
187
- * Возвращает `true`, если переменная является обычным массивом (`Array`), ассоциативным массивом (объектом с парами "ключ-значение"), ассоциативным массивом, созданным с помощью `Object.create(null)`. В остальных случаях метод возвращает `false`.
188
- *
189
- * ### Примеры использования
190
- *
191
- * 1. Простые массивы:
192
- *
193
- * ```js
194
- * Type.isArray([1, 2, 3]); // true
195
- * Type.isArray([]); // true
196
- * ```
197
- *
198
- * 2. Ассоциативные массивы (объекты с ключами и значениями):
199
- *
200
- * ```js
201
- * Type.isArray({ foo: 'bar', baz: 42 }); // true
202
- * Type.isArray({ '0': 'a', '1': 'b' }); // true
203
- * ```
204
- *
205
- * 3. Объекты, созданные без прототипа:
206
- *
207
- * ```js
208
- * const noProtoObject = Object.create(null);
209
- * noProtoObject.foo = 'bar';
210
- * Type.isArray(noProtoObject); // true
211
- * ```
212
- *
213
- * 4. Примитивы и невалидные значения:
214
- *
215
- * ```js
216
- * Type.isArray(null); // false
217
- * Type.isArray(undefined); // false
218
- * Type.isArray(42); // false
219
- * Type.isArray('hello'); // false
220
- * ```
221
- *
222
- * 5. Специальные объекты:
223
- *
224
- * ```js
225
- * Type.isArray(new Map()); // false
226
- * Type.isArray(new Set()); // false
227
- * Type.isArray(() => {}); // false
228
- * ```
229
- *
230
- * 6. Классы и их экземпляры:
231
- *
232
- * ```js
233
- * class MyClass {}
234
- * const instance = new MyClass();
235
- * Type.isArray(instance); // false
236
- * ```
237
- *
238
- * @param {any} value Проверяемая переменная.
239
- * @returns {boolean} Возвращает `true`, если значение является массивом или ассоциативным массивом, иначе `false`.
240
- */
241
- static isArray(value) {
242
- return is_array(value);
243
- }
244
-
245
- /**
246
- * Проверяет, является ли значение ассоциативным массивом.
247
- *
248
- * ### Описание
249
- *
250
- * Ассоциативные массивы в JavaScript представляют собой объекты с парами "ключ-значение".
251
- * Этот метод проверяет, является ли переданное значение ассоциативным массивом.
252
- *
253
- * Метод использует функцию `is_array` для проверки значения и убеждается, что значение не является обычным массивом.
254
- *
255
- * ### Параметры
256
- *
257
- * - `value` (any)
258
- * Значение, которое необходимо проверить.
259
- *
260
- * ### Возвращаемое значение
261
- *
262
- * Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
263
- *
264
- * ### Примеры использования
265
- *
266
- * 1. Ассоциативные массивы:
267
- *
268
- * ```js
269
- * Type.isAssoc({ foo: 'bar' }); // true
270
- * Type.isAssoc({}); // true
271
- * ```
272
- *
273
- * 2. Обычные массивы:
274
- *
275
- * ```js
276
- * Type.isAssoc([]); // false
277
- * Type.isAssoc([1, 2, 3]); // false
278
- * ```
279
- *
280
- * 3. Значения других типов:
281
- *
282
- * ```js
283
- * Type.isAssoc('string'); // false
284
- * Type.isAssoc(42); // false
285
- * Type.isAssoc(null); // false
286
- * Type.isAssoc(undefined); // false
287
- * ```
288
- *
289
- * @param {any} value Значение, которое необходимо проверить.
290
- * @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
291
- */
292
- static isAssoc(value) {
293
- return is_assoc(value);
294
- }
295
-
296
- /**
297
- * Проверяет, является ли значение типом `bigint`.
298
- *
299
- * ### Описание
300
- *
301
- * Метод `Type.isBigInt` проверяет, является ли переданное значение типом `bigint`.
302
- *
303
- * ### Параметры
304
- *
305
- * - `value` (any)
306
- * Значение, которое необходимо проверить.
307
- *
308
- * ### Возвращаемое значение
309
- *
310
- * Возвращает `true`, если значение является типом `bigint`, и `false` в противном случае.
311
- *
312
- * ### Примеры использования
313
- *
314
- * #### Пример 1: Проверка значений типа bigint
315
- *
316
- * ```js
317
- * Type.isBigInt(BigInt(123456)); // true
318
- * Type.isBigInt(BigInt(-123456)); // true
319
- * ```
320
- *
321
- * #### Пример 2: Проверка значений других типов
322
- *
323
- * ```js
324
- * Type.isBigInt(42); // false (число)
325
- * Type.isBigInt('42'); // false (строка)
326
- * Type.isBigInt(true); // false (логическое значение)
327
- * Type.isBigInt(null); // false
328
- * Type.isBigInt(undefined); // false
329
- * Type.isBigInt({}); // false (объект)
330
- * Type.isBigInt([]); // false (массив)
331
- * ```
332
- *
333
- * @param {any} value Значение, которое необходимо проверить.
334
- * @returns {boolean} Возвращает `true`, если значение является типом bigint, и `false` в противном случае.
335
- */
336
- static isBigInt(value) {
337
- return is_bigint(value);
338
- }
339
-
340
- /**
341
- * Проверяет, является ли переданное значение логическим типом (`boolean`).
342
- *
343
- * ### Описание
344
- *
345
- * В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
346
- * Метод проверяет тип переданного значения с использованием оператора `typeof`.
347
- * Если значение является примитивом типа `boolean`, метод возвращает `true`.
348
- * Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) метод вернёт `false`.
349
- *
350
- * #### Примечание
351
- *
352
- * - Метод возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
353
- * - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
354
- *
355
- * ### Параметры
356
- *
357
- * - `value` (any):
358
- * Проверяемая переменная.
359
- *
360
- * ### Возвращаемое значение
361
- *
362
- * Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
363
- *
364
- * ### Примеры использования
365
- *
366
- * ```js
367
- * Type.isBool(true); // Возвращает: true
368
- * Type.isBool(false); // Возвращает: true
369
- * Type.isBool(0); // Возвращает: false
370
- * Type.isBool('true'); // Возвращает: false
371
- * Type.isBool(null); // Возвращает: false
372
- * Type.isBool([]); // Возвращает: false
373
- * Type.isBool({}); // Возвращает: false
374
- * Type.isBool(new Boolean(true)); // Возвращает: false
375
- * ```
376
- *
377
- * @param {any} value Проверяемая переменная.
378
- * @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
379
- */
380
- static isBool(value) {
381
- return is_bool(value);
382
- }
383
-
384
- /**
385
- * Проверяет, является ли переданное значение логическим типом (`boolean`).
386
- *
387
- * ### Описание
388
- *
389
- * В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
390
- * Метод проверяет тип переданного значения с использованием оператора `typeof`.
391
- * Если значение является примитивом типа `boolean`, метод возвращает `true`.
392
- * Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) метод вернёт `false`.
393
- *
394
- * #### Примечание
395
- *
396
- * - Метод возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
397
- * - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
398
- *
399
- * ### Параметры
400
- *
401
- * - `value` (any):
402
- * Проверяемая переменная.
403
- *
404
- * ### Возвращаемое значение
405
- *
406
- * Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
407
- *
408
- * ### Примеры использования
409
- *
410
- * ```js
411
- * Type.isBoolean(true); // Возвращает: true
412
- * Type.isBoolean(false); // Возвращает: true
413
- * Type.isBoolean(0); // Возвращает: false
414
- * Type.isBoolean('true'); // Возвращает: false
415
- * Type.isBoolean(null); // Возвращает: false
416
- * Type.isBoolean([]); // Возвращает: false
417
- * Type.isBoolean({}); // Возвращает: false
418
- * Type.isBoolean(new Boolean(true)); // Возвращает: false
419
- * ```
420
- *
421
- * @param {any} value Проверяемая переменная.
422
- * @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
423
- */
424
- static isBoolean(value) {
425
- return is_bool(value);
426
- }
427
-
428
- /**
429
- * Проверяет, является ли переданная переменная классом.
430
- *
431
- * ### Параметры
432
- *
433
- * - `value` (any)
434
- * Проверяемая переменная.
435
- *
436
- * ### Описание
437
- *
438
- * В JavaScript классы являются функциями, но с уникальным поведением.
439
- *
440
- * Для определения класса метод проверяет:
441
- *
442
- * 1. Что переданная переменная является функцией.
443
- * 2. Что строковое представление функции начинается с `class `.
444
- *
445
- * #### Примечание
446
- *
447
- * Конструкторы функций, созданные с помощью `function`, не будут распознаны как классы.
448
- *
449
- * Для примера:
450
- *
451
- * ```js
452
- * function Foo() {}
453
- * Type.isClass(Foo); // Возвращает: false
454
- * ```
455
- *
456
- * В отличие от классов, которые выглядят так:
457
- *
458
- * ```js
459
- * class MyClass {}
460
- * Type.isClass(MyClass); // Возвращает: true
461
- * ```
462
- *
463
- * ### Возвращаемое значение
464
- *
465
- * Возвращает `true`, если значение является классом, иначе `false`.
466
- *
467
- * ### Примеры использования
468
- *
469
- * 1. Классы:
470
- *
471
- * ```js
472
- * class MyClass {}
473
- * Type.isClass(MyClass); // true
474
- * ```
475
- *
476
- * 2. Функции-конструкторы:
477
- *
478
- * ```js
479
- * function MyFunction() {}
480
- * Type.isClass(MyFunction); // false
481
- * ```
482
- *
483
- * 3. Объекты и примитивы:
484
- *
485
- * ```js
486
- * Type.isClass({}); // false
487
- * Type.isClass([]); // false
488
- * Type.isClass(null); // false
489
- * Type.isClass(42); // false
490
- * ```
491
- *
492
- * @param {any} value Проверяемая переменная.
493
- * @returns {boolean} Возвращает `true`, если значение является классом, иначе `false`.
494
- */
495
- static isClass(value) {
496
- return is_class(value);
497
- }
498
-
499
- /**
500
- * Проверяет, является ли значение числом с плавающей точкой.
501
- *
502
- * ### Параметры
503
- *
504
- * - `value` (any)
505
- * Значение для проверки.
506
- *
507
- * ### Описание
508
- *
509
- * Метод `Type.isFloat` проверяет, является ли переданное значение числом с дробной частью, которое отличается от целого числа.
510
- *
511
- * Она работает следующим образом:
512
- *
513
- * 1. Проверяет, что значение имеет тип `number`.
514
- * 2. Исключает значения `NaN`, которые также относятся к типу `number`, но не считаются числовыми значениями.
515
- * 3. Проверяет, что у числа есть дробная часть, проверяя остаток от деления на `1` (`value % 1 !== 0`).
516
- *
517
- * Значения, которые не являются числами или числа без дробной части, не считаются числами с плавающей точкой.
518
- *
519
- * ### Возвращаемое значение
520
- *
521
- * Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
522
- *
523
- * ### Примеры использования
524
- *
525
- * #### Числа с плавающей точкой
526
- *
527
- * ```js
528
- * Type.isFloat(3.14); // true
529
- * Type.isFloat(-0.5); // true
530
- * Type.isFloat(0.1 + 0.2); // true
531
- * ```
532
- *
533
- * #### Целые числа
534
- *
535
- * ```js
536
- * Type.isFloat(0); // false
537
- * Type.isFloat(42); // false
538
- * Type.isFloat(-100); // false
539
- * ```
540
- *
541
- * #### Нечисловые значения
542
- *
543
- * ```js
544
- * Type.isFloat('3.14'); // false
545
- * Type.isFloat(NaN); // false
546
- * Type.isFloat(null); // false
547
- * Type.isFloat(undefined); // false
548
- * Type.isFloat(true); // false
549
- * Type.isFloat({}); // false
550
- * Type.isFloat([]); // false
551
- * ```
552
- *
553
- * #### Специальные значения
554
- *
555
- * ```js
556
- * Type.isFloat(Infinity); // false
557
- * Type.isFloat(-Infinity); // false
558
- * ```
559
- *
560
- * @param {any} value Значение для проверки.
561
- * @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
562
- */
563
- static isFloat(value) {
564
- return is_float(value);
565
- }
566
-
567
- /**
568
- * Проверяет, что значение является функцией, исключая классы.
569
- *
570
- * ### Параметры
571
- *
572
- * - `value` (any):
573
- * Проверяемое значение. Может быть любым типом данных.
574
- *
575
- * ### Описание
576
- *
577
- * Метод проверяет, является ли переданное значение функцией, исключая классы.
578
- * В JavaScript функции и классы оба являются типом `function`, но классы имеют особый синтаксис и поведение.
579
- * Метод `Type.isFunction` различает их, проверяя, не начинается ли строковое представление функции с `class`, что указывает на то, что это класс, а не обычная функция.
580
- * Если значение является функцией (но не классом), метод возвращает `true`.
581
- * Для всех остальных типов данных (включая классы, объекты, примитивы) метод возвращает `false`.
582
- *
583
- * ### Возвращаемое значение
584
- *
585
- * Возвращает `true`, если переданное значение является функцией (но не классом).
586
- * Возвращает `false`, если переданное значение является классом или любым другим типом данных.
587
- *
588
- * ### Примеры использования
589
- *
590
- * Пример 1: обычная функция
591
- *
592
- * ```js
593
- * function test() {}
594
- * Type.isFunction(test); // Возвращает: true
595
- * ```
596
- *
597
- * Пример 2: класс
598
- *
599
- * ```js
600
- * class MyClass {}
601
- * Type.isFunction(MyClass); // Возвращает: false
602
- * ```
603
- *
604
- * Пример 3: объект
605
- *
606
- * ```js
607
- * const obj = {};
608
- * Type.isFunction(obj); // Возвращает: false
609
- * ```
610
- *
611
- * Пример 4: примитив
612
- *
613
- * ```js
614
- * Type.isFunction(42); // Возвращает: false
615
- * Type.isFunction('hello'); // Возвращает: false
616
- * ```
617
- *
618
- * @param {any} value - Проверяемое значение.
619
- * @returns {boolean} Возвращает `true`, если значение является функцией, иначе `false`.
620
- */
621
- static isFunction(value) {
622
- return is_function(value);
623
- }
624
-
625
- /**
626
- * Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
627
- *
628
- * ### Параметры
629
- *
630
- * - `value` (any)
631
- * Значение, которое необходимо проверить.
632
- *
633
- * ### Описание
634
- *
635
- * Метод `Type.isInfinity` проверяет, является ли переданное значение бесконечностью (Infinity или -Infinity).
636
- *
637
- * Он проверяет, равно ли значение `Number.POSITIVE_INFINITY` или `Number.NEGATIVE_INFINITY`.
638
- *
639
- * ### Возвращаемое значение
640
- *
641
- * Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
642
- *
643
- * ### Примеры использования
644
- *
645
- * #### Пример 1: Проверка значения Infinity
646
- *
647
- * ```js
648
- * Type.isInfinity(Infinity); // true
649
- * Type.isInfinity(-Infinity); // true
650
- * ```
651
- *
652
- * #### Пример 2: Проверка числовых значений
653
- *
654
- * ```js
655
- * Type.isInfinity(42); // false
656
- * Type.isInfinity(3.14); // false
657
- * Type.isInfinity(NaN); // false
658
- * ```
659
- *
660
- * #### Пример 3: Проверка значений других типов
661
- *
662
- * ```js
663
- * Type.isInfinity('Infinity'); // false (строка)
664
- * Type.isInfinity(true); // false (логическое значение)
665
- * Type.isInfinity(null); // false
666
- * Type.isInfinity(undefined); // false
667
- * Type.isInfinity({}); // false (объект)
668
- * Type.isInfinity([]); // false (массив)
669
- * ```
670
- *
671
- * @param {any} value Значение, которое необходимо проверить.
672
- * @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
673
- */
674
- static isInfinity(value) {
675
- return is_infinity(value);
676
- }
677
-
678
- /**
679
- * Проверяет, является ли значение целым числом.
680
- *
681
- * ### Параметры
682
- *
683
- * - `value` (any)
684
- * Значение, которое нужно проверить.
685
- *
686
- * ### Описание
687
- *
688
- * Метод `Type.isInt` определяет, является ли переданное значение целым числом.
689
- *
690
- * Он выполняет следующие проверки:
691
- *
692
- * 1. **Тип значения**: Убеждается, что `value` имеет тип `number`.
693
- * 2. **Конечность числа**: Проверяет, что значение не является `Infinity` или `NaN` с помощью `Number.isFinite(value)`.
694
- * 3. **Целочисленность**: Убедится, что остаток от деления числа на 1 равен нулю (`value % 1 === 0`).
695
- *
696
- * Если значение соответствует всем этим условиям, оно считается целым числом.
697
- *
698
- * ### Возвращаемое значение
699
- *
700
- * Возвращает `true`, если значение является целым числом, иначе `false`.
701
- *
702
- * ### Примеры использования
703
- *
704
- * ```js
705
- * // Проверка целых чисел
706
- * Type.isInt(42); // true
707
- * Type.isInt(0); // true
708
- * Type.isInt(-123); // true
709
- *
710
- * // Проверка дробных чисел
711
- * Type.isInt(3.14); // false
712
- * Type.isInt(-0.001); // false
713
- *
714
- * // Некорректные типы данных
715
- * Type.isInt('42'); // false (строка)
716
- * Type.isInt(true); // false (логическое значение)
717
- * Type.isInt(null); // false (null)
718
- * Type.isInt(undefined);// false (undefined)
719
- *
720
- * // Бесконечные и некорректные числовые значения
721
- * Type.isInt(Infinity); // false (бесконечность)
722
- * Type.isInt(-Infinity);// false (отрицательная бесконечность)
723
- * Type.isInt(NaN); // false (не число)
724
- *
725
- * // Проверка типа bigint
726
- * Type.isInt(BigInt(123456)); // false
727
- * ```
728
- *
729
- * @param {any} value Значение для проверки.
730
- * @returns {boolean} Возвращает `true`, если значение является целым числом, иначе `false`.
731
- */
732
- static isInt(value) {
733
- return is_int(value);
734
- }
735
-
736
- /**
737
- * Проверяет, является ли значение целым числом.
738
- *
739
- * ### Параметры
740
- *
741
- * - `value` (any)
742
- * Значение, которое необходимо проверить.
743
- *
744
- * ### Описание
745
- *
746
- * Метод `Type.isInteger` проверяет, является ли переданное значение целым числом.
747
- *
748
- * 1. Проверяется, что значение имеет тип `number`.
749
- * 2. Убеждается, что значение является конечным числом.
750
- * 3. Проверяется, что остаток от деления значения на 1 равен 0.
751
- *
752
- * Метод возвращает `false` для:
753
- *
754
- * - Чисел с плавающей точкой (например, `3.14`, `-0.99`).
755
- * - Специальных чисел (`NaN`, `Infinity`, `-Infinity`).
756
- * - Значений других типов, таких как строки, объекты или массивы.
757
- *
758
- * ### Возвращаемое значение
759
- *
760
- * Возвращает `true`, если значение является целым числом, и `false` в противном случае.
761
- *
762
- * ### Примеры использования
763
- *
764
- * #### Пример 1: Проверка целых чисел
765
- *
766
- * ```js
767
- * Type.isInteger(42); // true
768
- * Type.isInteger(-7); // true
769
- * Type.isInteger(0); // true
770
- * ```
771
- *
772
- * #### Пример 2: Проверка чисел с плавающей точкой
773
- *
774
- * ```js
775
- * Type.isInteger(3.14); // false
776
- * Type.isInteger(-0.5); // false
777
- * ```
778
- *
779
- * #### Пример 3: Проверка специальных чисел
780
- *
781
- * ```js
782
- * Type.isInteger(NaN); // false
783
- * Type.isInteger(Infinity); // false
784
- * Type.isInteger(-Infinity); // false
785
- * ```
786
- *
787
- * #### Пример 4: Проверка других типов данных
788
- *
789
- * ```js
790
- * Type.isInteger('42'); // false (строка)
791
- * Type.isInteger(true); // false (логическое значение)
792
- * Type.isInteger(null); // false
793
- * Type.isInteger(undefined); // false
794
- * Type.isInteger({}); // false (объект)
795
- * Type.isInteger([]); // false (массив)
796
- * ```
797
- *
798
- * #### Пример 5: Проверка типа bigint
799
- *
800
- * ```js
801
- * Type.isInteger(BigInt(123456)); // false
802
- * ```
803
- *
804
- * @param {any} value Значение для проверки.
805
- * @returns {boolean} Возвращает `true`, если значение является целым числом, иначе `false`.
806
- */
807
- static isInteger(value) {
808
- return is_int(value);
809
- }
810
-
811
- /**
812
- * Проверяет, является ли значение списком.
813
- *
814
- * ### Параметры
815
- *
816
- * - `value` (any)
817
- * Значение, которое необходимо проверить.
818
- *
819
- * ### Описание
820
- *
821
- * Метод `Type.isList` проверяет, является ли переданное значение списком.
822
- *
823
- * Он использует метод `Array.isArray` для проверки значения.
824
- *
825
- * ### Возвращаемое значение
826
- *
827
- * Возвращает `true`, если значение является списком, и `false` в противном случае.
828
- *
829
- * ### Примеры использования
830
- *
831
- * #### Пример 1: Проверка массивов
832
- *
833
- * ```js
834
- * Type.isList([]); // true
835
- * Type.isList([1, 2, 3]); // true
836
- * ```
837
- *
838
- * #### Пример 2: Проверка значений других типов
839
- *
840
- * ```js
841
- * Type.isList({}); // false (ассоциативный массив)
842
- * Type.isList('string'); // false (строка)
843
- * Type.isList(42); // false (число)
844
- * Type.isList(null); // false
845
- * Type.isList(undefined); // false
846
- * ```
847
- *
848
- * @param {any} value Значение, которое необходимо проверить.
849
- * @returns {boolean} Возвращает `true`, если значение является списком, и `false` в противном случае.
850
- */
851
- static isList(value) {
852
- return is_list(value);
853
- }
854
-
855
- /**
856
- * Проверяет, является ли значение NaN.
857
- *
858
- * ### Параметры
859
- *
860
- * - `value` (any)
861
- * Значение, которое необходимо проверить.
862
- *
863
- * ### Описание
864
- *
865
- * Метод `Type.isNaN` проверяет, является ли переданное значение NaN (Not-a-Number).
866
- *
867
- * Он использует метод `Number.isNaN` для проверки значения.
868
- *
869
- * ### Возвращаемое значение
870
- *
871
- * Возвращает `true`, если значение является NaN, и `false` в противном случае.
872
- *
873
- * ### Примеры использования
874
- *
875
- * #### Пример 1: Проверка значения NaN
876
- *
877
- * ```js
878
- * Type.isNaN(NaN); // true
879
- * ```
880
- *
881
- * #### Пример 2: Проверка числовых значений
882
- *
883
- * ```js
884
- * Type.isNaN(42); // false
885
- * Type.isNaN(3.14); // false
886
- * Type.isNaN(Infinity); // false
887
- * ```
888
- *
889
- * #### Пример 3: Проверка значений других типов
890
- *
891
- * ```js
892
- * Type.isNaN('42'); // false (строка)
893
- * Type.isNaN(true); // false (логическое значение)
894
- * Type.isNaN(null); // false
895
- * Type.isNaN(undefined); // false
896
- * Type.isNaN({}); // false (объект)
897
- * Type.isNaN([]); // false (массив)
898
- * ```
899
- *
900
- * @param {any} value Значение, которое необходимо проверить.
901
- * @returns {boolean} Возвращает `true`, если значение является NaN, и `false` в противном случае.
902
- */
903
- static isNaN(value) {
904
- return is_nan(value);
905
- }
906
-
907
- /**
908
- * Проверяет, является ли значение `null`.
909
- *
910
- * ### Параметры
911
- *
912
- * - `value` (any)
913
- * Значение, которое необходимо проверить.
914
- *
915
- * ### Описание
916
- *
917
- * Метод `Type.isNull` проверяет, является ли переданное значение `null`.
918
- *
919
- * Он просто сравнивает значение с `null`.
920
- *
921
- * ### Возвращаемое значение
922
- *
923
- * Возвращает `true`, если значение является `null`, и `false` в противном случае.
924
- *
925
- * ### Примеры использования
926
- *
927
- * #### Пример 1: Проверка значения `null`
928
- *
929
- * ```js
930
- * Type.isNull(null); // true
931
- * ```
932
- *
933
- * #### Пример 2: Проверка значений других типов
934
- *
935
- * ```js
936
- * Type.isNull(undefined); // false
937
- * Type.isNull(0); // false
938
- * Type.isNull(''); // false
939
- * Type.isNull(false); // false
940
- * Type.isNull({}); // false
941
- * Type.isNull([]); // false
942
- * ```
943
- *
944
- * @param {any} value Значение, которое необходимо проверить.
945
- * @returns {boolean} Возвращает `true`, если значение является `null`, и `false` в противном случае.
946
- */
947
- static isNull(value) {
948
- return is_null(value);
949
- }
950
-
951
- /**
952
- * Проверяет, является ли значение числом.
953
- *
954
- * ### Параметры
955
- *
956
- * - `value` (any)
957
- * Значение, которое необходимо проверить.
958
- *
959
- * ### Описание
960
- *
961
- * Метод `Type.isNumber` проверяет, является ли переданное значение числом.
962
- *
963
- * Он использует оператор `typeof` для проверки типа значения.
964
- *
965
- * Метод возвращает `false` для значений других типов, таких как строки, объекты или массивы.
966
- *
967
- * ### Возвращаемое значение
968
- *
969
- * Возвращает `true`, если значение является числом, и `false` в противном случае.
970
- *
971
- * ### Примеры использования
972
- *
973
- * #### Пример 1: Проверка числовых значений
974
- *
975
- * ```js
976
- * Type.isNumber(42); // true
977
- * Type.isNumber(3.14); // true
978
- * ```
979
- *
980
- * #### Пример 2: Проверка значений других типов
981
- *
982
- * ```js
983
- * Type.isNumber('42'); // false (строка)
984
- * Type.isNumber(true); // false (логическое значение)
985
- * Type.isNumber(null); // false
986
- * Type.isNumber(undefined); // false
987
- * Type.isNumber({}); // false (объект)
988
- * Type.isNumber([]); // false (массив)
989
- * ```
990
- *
991
- * #### Пример 3: Проверка специальных чисел
992
- *
993
- * ```js
994
- * Type.isNumber(NaN); // false
995
- * Type.isNumber(Infinity); // false
996
- * Type.isNumber(-Infinity); // false
997
- * ```
998
- *
999
- * @param {any} value Значение, которое необходимо проверить.
1000
- * @returns {boolean} Возвращает `true`, если значение является числом, и `false` в противном случае.
1001
- */
1002
- static isNumber(value) {
1003
- return is_number(value);
1004
- }
1005
-
1006
- /**
1007
- * Проверяет, является ли значение числом или числовой строкой.
1008
- *
1009
- * ### Параметры
1010
- *
1011
- * - `value` (any)
1012
- * Значение, которое необходимо проверить.
1013
- *
1014
- * ### Описание
1015
- *
1016
- * Метод `Type.isNumeric` проверяет, является ли переданное значение числом или строкой, которая может быть преобразована в число.
1017
- *
1018
- * Он использует функцию `is_numeric` для выполнения проверки.
1019
- *
1020
- * ### Возвращаемое значение
1021
- *
1022
- * Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
1023
- *
1024
- * ### Примеры использования
1025
- *
1026
- * #### Пример 1: Проверка числовых значений
1027
- *
1028
- * ```js
1029
- * Type.isNumeric(42); // true
1030
- * Type.isNumeric(3.14); // true
1031
- * ```
1032
- *
1033
- * #### Пример 2: Проверка числовых строк
1034
- *
1035
- * ```js
1036
- * Type.isNumeric('42'); // true
1037
- * Type.isNumeric('3.14'); // true
1038
- * ```
1039
- *
1040
- * #### Пример 3: Проверка значений других типов
1041
- *
1042
- * ```js
1043
- * Type.isNumeric(true); // false (логическое значение)
1044
- * Type.isNumeric(null); // false
1045
- * Type.isNumeric(undefined); // false
1046
- * Type.isNumeric({}); // false (объект)
1047
- * Type.isNumeric([]); // false (массив)
1048
- * Type.isNumeric('hello'); // false (строка)
1049
- * ```
1050
- *
1051
- * @param {any} value Значение, которое необходимо проверить.
1052
- * @returns {boolean} Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
1053
- */
1054
- static isNumeric(value) {
1055
- return is_numeric(value);
1056
- }
1057
-
1058
- /**
1059
- * Проверяет, является ли переданная переменная объектом.
1060
- *
1061
- * ### Параметры
1062
- *
1063
- * - `value` (any)
1064
- * Проверяемая переменная.
1065
- *
1066
- * ### Описание
1067
- *
1068
- * Метод `Type.isObject` проверяет, является ли переданное значение объектом.
1069
- *
1070
- * Он использует оператор `typeof` для проверки типа значения и убеждается, что значение не является `null`.
1071
- *
1072
- * Метод возвращает `false` для значений других типов, таких как числа, строки, массивы или функции.
1073
- *
1074
- * ### Возвращаемое значение
1075
- *
1076
- * Возвращает `true`, если значение является объектом, и `false` в противном случае.
1077
- *
1078
- * ### Примеры использования
1079
- *
1080
- * #### Пример 1: Проверка объектов
1081
- *
1082
- * ```js
1083
- * Type.isObject({}); // true
1084
- * Type.isObject({ key: 'value' }); // true
1085
- * ```
1086
- *
1087
- * #### Пример 2: Проверка значений других типов
1088
- *
1089
- * ```js
1090
- * Type.isObject(42); // false (число)
1091
- * Type.isObject('string'); // false (строка)
1092
- * Type.isObject(null); // false
1093
- * Type.isObject(undefined); // false
1094
- * Type.isObject([]); // false (массив)
1095
- * Type.isObject(() => {}); // false (функция)
1096
- * ```
1097
- *
1098
- * @param {any} value Проверяемая переменная.
1099
- * @returns {boolean} Возвращает `true`, если значение является объектом, иначе `false`.
1100
- */
1101
- static isObject(value) {
1102
- return is_object(value);
1103
- }
1104
-
1105
- /**
1106
- * Проверяет, является ли значение скалярным.
1107
- *
1108
- * ### Параметры
1109
- *
1110
- * - `value` (any)
1111
- * Проверяемая переменная.
1112
- *
1113
- * ### Описание
1114
- *
1115
- * Скалярные переменные — это переменные, содержащие `int`, `float`, `string`, `bool` и `symbol`.
1116
- * Типы `array`, `object`, `null`, `undefined` — не скалярные.
1117
- *
1118
- * ### Возвращаемое значение
1119
- *
1120
- * Возвращает `true`, если значение является скалярным, иначе `false`.
1121
- *
1122
- * ### Примеры использования
1123
- *
1124
- * ```js
1125
- * // Пример 1: Проверка скалярных значений
1126
- * Type.isScalar(true); // true
1127
- * Type.isScalar(42); // true
1128
- * Type.isScalar('hello'); // true
1129
- * Type.isScalar(Symbol('symbol')); // true
1130
- *
1131
- * // Пример 2: Проверка не скалярных значений
1132
- * Type.isScalar(null); // false
1133
- * Type.isScalar(undefined); // false
1134
- * Type.isScalar({}); // false (объект)
1135
- * Type.isScalar([]); // false (массив)
1136
- * Type.isScalar(() => {}); // false (функция)
1137
- * ```
1138
- *
1139
- * @param {any} value Проверяемая переменная.
1140
- * @returns {boolean} Возвращает `true`, если значение является скалярным, иначе `false`.
1141
- */
1142
- static isScalar(value) {
1143
- return is_scalar(value);
1144
- }
1145
-
1146
- /**
1147
- * Проверяет, является ли значение строкой.
1148
- *
1149
- * ### Параметры
1150
- *
1151
- * - `value` (any)
1152
- * Значение, которое необходимо проверить.
1153
- *
1154
- * ### Описание
1155
- *
1156
- * Метод `Type.isString` проверяет, является ли переданное значение строкой.
1157
- *
1158
- * Он использует оператор `typeof` для проверки типа значения.
1159
- *
1160
- * Метод возвращает `false` для значений других типов, таких как числа, объекты или массивы.
1161
- *
1162
- * ### Возвращаемое значение
1163
- *
1164
- * Возвращает `true`, если значение является строкой, и `false` в противном случае.
1165
- *
1166
- * ### Примеры использования
1167
- *
1168
- * #### Пример 1: Проверка строковых значений
1169
- *
1170
- * ```js
1171
- * Type.isString('hello'); // true
1172
- * Type.isString(''); // true
1173
- * ```
1174
- *
1175
- * #### Пример 2: Проверка значений других типов
1176
- *
1177
- * ```js
1178
- * Type.isString(42); // false (число)
1179
- * Type.isString(true); // false (логическое значение)
1180
- * Type.isString(null); // false
1181
- * Type.isString(undefined); // false
1182
- * Type.isString({}); // false (объект)
1183
- * Type.isString([]); // false (массив)
1184
- * ```
1185
- *
1186
- * @param {any} value Значение, которое необходимо проверить.
1187
- * @returns {boolean} Возвращает `true`, если значение является строкой, иначе `false`.
1188
- */
1189
- static isString(value) {
1190
- return is_string(value);
1191
- }
1192
-
1193
- /**
1194
- * Проверяет, является ли значение символом.
1195
- *
1196
- * ### Параметры
1197
- *
1198
- * - `value` (any)
1199
- * Проверяемая переменная.
1200
- *
1201
- * ### Описание
1202
- *
1203
- * Метод `Type.isSymbol` предназначен для проверки, является ли переданное значение символом.
1204
- *
1205
- * Он проверяет:
1206
- *
1207
- * 1. Что значение имеет тип `symbol`.
1208
- *
1209
- * Метод возвращает `false` для всех значений, не принадлежащих типу `symbol`.
1210
- *
1211
- * ### Возвращаемое значение
1212
- *
1213
- * Возвращает `true`, если значение является символом, иначе `false`.
1214
- *
1215
- * ### Примеры использования
1216
- *
1217
- * ```js
1218
- * // Пример 1: Проверка символов
1219
- * Type.isSymbol(Symbol('symbol')); // true
1220
- * Type.isSymbol(Symbol.iterator); // true
1221
- *
1222
- * // Пример 2: Проверка значений других типов
1223
- * Type.isSymbol('hello'); // false (строка)
1224
- * Type.isSymbol(42); // false (число)
1225
- * Type.isSymbol(true); // false (логическое значение)
1226
- * Type.isSymbol(null); // false
1227
- * Type.isSymbol(undefined); // false
1228
- * Type.isSymbol({}); // false (объект)
1229
- * Type.isSymbol([]); // false (массив)
1230
- * Type.isSymbol(() => {}); // false (функция)
1231
- * ```
1232
- *
1233
- * @param {any} value Проверяемая переменная.
1234
- * @returns {boolean} Возвращает `true`, если значение является символом, иначе `false`.
1235
- */
1236
- static isSymbol(value) {
1237
- return is_symbol(value);
1238
- }
1239
-
1240
- /**
1241
- * Проверяет, является ли значение `undefined`.
1242
- *
1243
- * ### Параметры
1244
- *
1245
- * - `value` (any)
1246
- * Проверяемая переменная.
1247
- *
1248
- * ### Описание
1249
- *
1250
- * Метод `Type.isUndefined` проверяет, является ли переданное значение `undefined`.
1251
- *
1252
- * Он использует оператор `typeof` для проверки типа значения.
1253
- *
1254
- * Метод возвращает `false` для всех значений, не принадлежащих типу `undefined`.
1255
- *
1256
- * ### Возвращаемое значение
1257
- *
1258
- * Возвращает `true`, если значение является `undefined`, иначе `false`.
1259
- *
1260
- * ### Примеры использования
1261
- *
1262
- * ```js
1263
- * // Пример 1: Проверка значения undefined
1264
- * Type.isUndefined(undefined); // true
1265
- *
1266
- * // Пример 2: Проверка значений других типов
1267
- * Type.isUndefined(null); // false
1268
- * Type.isUndefined(42); // false (число)
1269
- * Type.isUndefined('hello'); // false (строка)
1270
- * Type.isUndefined(true); // false (логическое значение)
1271
- * Type.isUndefined({}); // false (объект)
1272
- * Type.isUndefined([]); // false (массив)
1273
- * Type.isUndefined(() => {}); // false (функция)
1274
- * ```
1275
- *
1276
- * @param {any} value Проверяемая переменная.
1277
- * @returns {boolean} Возвращает `true`, если значение является `undefined`, иначе `false`.
1278
- */
1279
- static isUndefined(value) {
1280
- return is_undefined(value);
1281
- }
1282
- }
1283
-
1284
- export default Type;
1
+ import {
2
+ TYPE_ARRAY,
3
+ TYPE_BIGINT,
4
+ TYPE_BOOLEAN,
5
+ TYPE_CLASS,
6
+ TYPE_FLOAT,
7
+ TYPE_FUNCTION,
8
+ TYPE_INFINITY,
9
+ TYPE_INTEGER,
10
+ TYPE_NAN,
11
+ TYPE_NULL,
12
+ TYPE_OBJECT,
13
+ TYPE_STRING,
14
+ TYPE_SYMBOL,
15
+ TYPE_UNDEFINED,
16
+ } from '../constants.mjs';
17
+ import empty from '../helpers/empty.mjs';
18
+ import expect_array from '../helpers/expect_array.mjs';
19
+ import expect_assoc from '../helpers/expect_assoc.mjs';
20
+ import expect_bigint from '../helpers/expect_bigint.mjs';
21
+ import expect_bool from '../helpers/expect_bool.mjs';
22
+ import expect_char from '../helpers/expect_char.mjs';
23
+ import expect_class from '../helpers/expect_class.mjs';
24
+ import expect_float from '../helpers/expect_float.mjs';
25
+ import expect_function from '../helpers/expect_function.mjs';
26
+ import expect_infinity from '../helpers/expect_infinity.mjs';
27
+ import expect_int from '../helpers/expect_int.mjs';
28
+ import expect_integer from '../helpers/expect_integer.mjs';
29
+ import expect_list from '../helpers/expect_list.mjs';
30
+ import expect_nan from '../helpers/expect_nan.mjs';
31
+ import expect_null from '../helpers/expect_null.mjs';
32
+ import expect_number from '../helpers/expect_number.mjs';
33
+ import expect_numeric from '../helpers/expect_numeric.mjs';
34
+ import expect_object from '../helpers/expect_object.mjs';
35
+ import expect_scalar from '../helpers/expect_scalar.mjs';
36
+ import expect_string from '../helpers/expect_string.mjs';
37
+ import expect_symbol from '../helpers/expect_symbol.mjs';
38
+ import expect_undefined from '../helpers/expect_undefined.mjs';
39
+ import is_array from '../helpers/is_array.mjs';
40
+ import is_assoc from '../helpers/is_assoc.mjs';
41
+ import is_bigint from '../helpers/is_bigint.mjs';
42
+ import is_bool from '../helpers/is_bool.mjs';
43
+ import is_class from '../helpers/is_class.mjs';
44
+ import is_float from '../helpers/is_float.mjs';
45
+ import is_function from '../helpers/is_function.mjs';
46
+ import is_infinity from '../helpers/is_infinity.mjs';
47
+ import is_int from '../helpers/is_int.mjs';
48
+ import is_list from '../helpers/is_list.mjs';
49
+ import is_nan from '../helpers/is_nan.mjs';
50
+ import is_null from '../helpers/is_null.mjs';
51
+ import is_number from '../helpers/is_number.mjs';
52
+ import is_numeric from '../helpers/is_numeric.mjs';
53
+ import is_object from '../helpers/is_object.mjs';
54
+ import is_scalar from '../helpers/is_scalar.mjs';
55
+ import is_string from '../helpers/is_string.mjs';
56
+ import is_symbol from '../helpers/is_symbol.mjs';
57
+ import is_undefined from '../helpers/is_undefined.mjs';
58
+
59
+ /**
60
+ * Класс `Type` предоставляет методы для проверки типов данных в JavaScript.
61
+ *
62
+ * ### Описание
63
+ *
64
+ * Класс `Type` включает в себя статические методы, которые позволяют проверять типы различных значений.
65
+ * Эти методы охватывают широкий спектр типов данных, включая примитивы, объекты, массивы, функции и специальные значения.
66
+ *
67
+ * ### Методы
68
+ *
69
+ * - `Type.isEmpty(value)` - Проверяет, является ли переменная пустой.
70
+ * - `Type.isArray(value)` - Проверяет, является ли переданное значение массивом или ассоциативным массивом.
71
+ * - `Type.isAssoc(value)` - Проверяет, является ли значение ассоциативным массивом.
72
+ * - `Type.isBigInt(value)` - Проверяет, является ли значение типом `bigint`.
73
+ * - `Type.isBool(value)` - Проверяет, является ли переданное значение логическим типом (`boolean`).
74
+ * - `Type.isBoolean(value)` - Проверяет, является ли переданное значение логическим типом (`boolean`).
75
+ * - `Type.isClass(value)` - Проверяет, является ли переданная переменная классом.
76
+ * - `Type.isFloat(value)` - Проверяет, является ли значение числом с плавающей точкой.
77
+ * - `Type.isFunction(value)` - Проверяет, что значение является функцией, исключая классы.
78
+ * - `Type.isInfinity(value)` - Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
79
+ * - `Type.isInt(value)` - Проверяет, является ли значение целым числом.
80
+ * - `Type.isInteger(value)` - Проверяет, является ли значение целым числом.
81
+ * - `Type.isList(value)` - Проверяет, является ли значение списком.
82
+ * - `Type.isNaN(value)` - Проверяет, является ли значение NaN.
83
+ * - `Type.isNull(value)` - Проверяет, является ли значение `null`.
84
+ * - `Type.isNumber(value)` - Проверяет, является ли значение числом.
85
+ * - `Type.isNumeric(value)` - Проверяет, является ли значение числом или числовой строкой.
86
+ * - `Type.isObject(value)` - Проверяет, является ли переданная переменная объектом.
87
+ * - `Type.isScalar(value)` - Проверяет, является ли значение скалярным.
88
+ * - `Type.isString(value)` - Проверяет, является ли значение строкой.
89
+ * - `Type.isSymbol(value)` - Проверяет, является ли значение символом.
90
+ * - `Type.isUndefined(value)` - Проверяет, является ли значение `undefined`.
91
+ *
92
+ * ### Примеры использования
93
+ *
94
+ * ```js
95
+ * // Проверка пустых значений
96
+ * Type.isEmpty(null); // true
97
+ * Type.isEmpty(''); // true
98
+ *
99
+ * // Проверка массивов и ассоциативных массивов
100
+ * Type.isArray([1, 2, 3]); // true
101
+ * Type.isArray({ foo: 'bar' }); // true
102
+ *
103
+ * // Проверка логических значений
104
+ * Type.isBool(true); // true
105
+ * Type.isBoolean(false); // true
106
+ *
107
+ * // Проверка чисел и числовых строк
108
+ * Type.isNumber(42); // true
109
+ * Type.isNumeric('42'); // true
110
+ *
111
+ * // Проверка объектов и символов
112
+ * Type.isObject({}); // true
113
+ * Type.isSymbol(Symbol('symbol')); // true
114
+ *
115
+ * // Проверка функций и классов
116
+ * function test() {}
117
+ * class MyClass {}
118
+ * Type.isFunction(test); // true
119
+ * Type.isClass(MyClass); // true
120
+ * ```
121
+ */
122
+ class Type {
123
+ /**
124
+ * Константа, представляющая значение null.
125
+ * @type {string}
126
+ * @readonly
127
+ */
128
+ static NULL = 'null';
129
+
130
+ /**
131
+ * Константа, представляющая значение NaN (Not-a-Number).
132
+ * @type {string}
133
+ * @readonly
134
+ */
135
+ static NAN = 'NaN';
136
+
137
+ /**
138
+ * Константа, представляющая значение undefined.
139
+ * @type {string}
140
+ * @readonly
141
+ */
142
+ static UNDEFINED = 'undefined';
143
+
144
+ /**
145
+ * Константа, представляющая значение Infinity.
146
+ * @type {string}
147
+ * @readonly
148
+ */
149
+ static INFINITY = 'infinity';
150
+
151
+ /**
152
+ * Константа, представляющая тип boolean.
153
+ * @type {string}
154
+ * @readonly
155
+ */
156
+ static BOOLEAN = 'boolean';
157
+
158
+ /**
159
+ * Константа, представляющая тип integer (целое число).
160
+ * @type {string}
161
+ * @readonly
162
+ */
163
+ static INTEGER = 'integer';
164
+
165
+ /**
166
+ * Константа, представляющая тип bigint (большое целое число).
167
+ * @type {string}
168
+ * @readonly
169
+ */
170
+ static BIGINT = 'bigint';
171
+
172
+ /**
173
+ * Константа, представляющая тип float (число с плавающей запятой).
174
+ * @type {string}
175
+ * @readonly
176
+ */
177
+ static FLOAT = 'float';
178
+
179
+ /**
180
+ * Константа, представляющая тип string (строка).
181
+ * @type {string}
182
+ * @readonly
183
+ */
184
+ static STRING = 'string';
185
+
186
+ /**
187
+ * Константа, представляющая тип symbol (символ).
188
+ * @type {string}
189
+ * @readonly
190
+ */
191
+ static SYMBOL = 'symbol';
192
+
193
+ /**
194
+ * Константа, представляющая тип class (класс).
195
+ * @type {string}
196
+ * @readonly
197
+ */
198
+ static CLASS = 'class';
199
+
200
+ /**
201
+ * Константа, представляющая тип function (функция).
202
+ * @type {string}
203
+ * @readonly
204
+ */
205
+ static FUNCTION = 'function';
206
+
207
+ /**
208
+ * Константа, представляющая тип array (массив).
209
+ * @type {string}
210
+ * @readonly
211
+ */
212
+ static ARRAY = 'array';
213
+
214
+ /**
215
+ * Константа, представляющая тип object (объект).
216
+ * @type {string}
217
+ * @readonly
218
+ */
219
+ static OBJECT = 'object';
220
+
221
+ /**
222
+ * Проверяет, является ли значение массивом, и выбрасывает ошибку с указанным сообщением, если это не так.
223
+ *
224
+ * ### Описание
225
+ *
226
+ * Метод `expectArray` используется для проверки, является ли переданное значение массивом.
227
+ * Если значение не является массивом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
228
+ *
229
+ * ### Параметры
230
+ *
231
+ * - `value` (any): Значение для проверки.
232
+ * - `message` (string): Сообщение об ошибке, если значение не является массивом. По умолчанию пустая строка.
233
+ *
234
+ * ### Возвращаемое значение
235
+ *
236
+ * Возвращает `true`, если значение является массивом.
237
+ *
238
+ * ### Примеры использования
239
+ *
240
+ * 1. Проверка значения, являющегося массивом:
241
+ *
242
+ * ```js
243
+ * const array = [1, 2, 3];
244
+ * const result = Type.expectArray(array);
245
+ * console.log(result); // true
246
+ * ```
247
+ *
248
+ * 2. Проверка значения, не являющегося массивом:
249
+ *
250
+ * ```js
251
+ * try {
252
+ * const result = Type.expectArray('not an array', 'Значение должно быть массивом.');
253
+ * } catch (e) {
254
+ * console.error(e.message); // Значение должно быть массивом.
255
+ * }
256
+ * ```
257
+ *
258
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
259
+ *
260
+ * ```js
261
+ * try {
262
+ * const result = Type.expectArray(123, 'Ожидался массив.');
263
+ * } catch (e) {
264
+ * console.error(e.message); // Ожидался массив.
265
+ * }
266
+ * ```
267
+ *
268
+ * @param {any} value Значение для проверки.
269
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является массивом.
270
+ * @returns {boolean} Возвращает `true`, если значение является массивом.
271
+ * @throws {TypeError} Если значение не является массивом или если параметр `message` не является строкой.
272
+ */
273
+ static expectArray(value, message = '') {
274
+ return expect_array(value, message);
275
+ }
276
+
277
+ /**
278
+ * Проверяет, является ли значение ассоциативным массивом, и выбрасывает ошибку с указанным сообщением, если это не так.
279
+ *
280
+ * ### Описание
281
+ *
282
+ * Метод `expectAssoc` используется для проверки, является ли переданное значение ассоциативным массивом.
283
+ * Если значение не является ассоциативным массивом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
284
+ *
285
+ * ### Параметры
286
+ *
287
+ * - `value` (any): Значение для проверки.
288
+ * - `message` (string): Сообщение об ошибке, если значение не является ассоциативным массивом. По умолчанию пустая строка.
289
+ *
290
+ * ### Возвращаемое значение
291
+ *
292
+ * Возвращает `true`, если значение является ассоциативным массивом.
293
+ *
294
+ * ### Примеры использования
295
+ *
296
+ * 1. Проверка значения, являющегося ассоциативным массивом:
297
+ *
298
+ * ```js
299
+ * const assoc = { a: 1, b: 2, c: 3 };
300
+ * const result = Type.expectAssoc(assoc);
301
+ * console.log(result); // true
302
+ * ```
303
+ *
304
+ * 2. Проверка значения, не являющегося ассоциативным массивом:
305
+ *
306
+ * ```js
307
+ * try {
308
+ * const result = Type.expectAssoc([1, 2, 3], 'Значение должно быть ассоциативным массивом.');
309
+ * } catch (e) {
310
+ * console.error(e.message); // Значение должно быть ассоциативным массивом.
311
+ * }
312
+ * ```
313
+ *
314
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
315
+ *
316
+ * ```js
317
+ * try {
318
+ * const result = Type.expectAssoc(123, 'Ожидался ассоциативный массив.');
319
+ * } catch (e) {
320
+ * console.error(e.message); // Ожидался ассоциативный массив.
321
+ * }
322
+ * ```
323
+ *
324
+ * @param {any} value Значение для проверки.
325
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является ассоциативным массивом.
326
+ * @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом.
327
+ * @throws {TypeError} Если значение не является ассоциативным массивом или если параметр `message` не является строкой.
328
+ */
329
+ static expectAssoc(value, message = '') {
330
+ return expect_assoc(value, message);
331
+ }
332
+
333
+ /**
334
+ * Проверяет, является ли значение BigInt, и выбрасывает ошибку с указанным сообщением, если это не так.
335
+ *
336
+ * ### Описание
337
+ *
338
+ * Метод `expectBigInt` используется для проверки, является ли переданное значение BigInt.
339
+ * Если значение не является BigInt, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
340
+ *
341
+ * ### Параметры
342
+ *
343
+ * - `value` (any): Значение для проверки.
344
+ * - `message` (string): Сообщение об ошибке, если значение не является BigInt. По умолчанию пустая строка.
345
+ *
346
+ * ### Возвращаемое значение
347
+ *
348
+ * Возвращает `true`, если значение является BigInt.
349
+ *
350
+ * ### Примеры использования
351
+ *
352
+ * 1. Проверка значения, являющегося BigInt:
353
+ *
354
+ * ```js
355
+ * const value = 123n;
356
+ * const result = Type.expectBigInt(value);
357
+ * console.log(result); // true
358
+ * ```
359
+ *
360
+ * 2. Проверка значения, не являющегося BigInt:
361
+ *
362
+ * ```js
363
+ * try {
364
+ * const result = Type.expectBigInt(123, 'Значение должно быть BigInt.');
365
+ * } catch (e) {
366
+ * console.error(e.message); // Значение должно быть BigInt.
367
+ * }
368
+ * ```
369
+ *
370
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
371
+ *
372
+ * ```js
373
+ * try {
374
+ * const result = Type.expectBigInt('123', 'Ожидался BigInt.');
375
+ * } catch (e) {
376
+ * console.error(e.message); // Ожидался BigInt.
377
+ * }
378
+ * ```
379
+ *
380
+ * @param {any} value Значение для проверки.
381
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является BigInt.
382
+ * @returns {boolean} Возвращает `true`, если значение является BigInt.
383
+ * @throws {TypeError} Если значение не является BigInt или если параметр `message` не является строкой.
384
+ */
385
+ static expectBigInt(value, message = '') {
386
+ return expect_bigint(value, message);
387
+ }
388
+
389
+ /**
390
+ * Проверяет, является ли значение логическим типом, и выбрасывает ошибку с указанным сообщением, если это не так.
391
+ *
392
+ * ### Описание
393
+ *
394
+ * Метод `expectBool` используется для проверки, является ли переданное значение логическим типом.
395
+ * Если значение не является логическим типом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
396
+ *
397
+ * ### Параметры
398
+ *
399
+ * - `value` (any): Значение для проверки.
400
+ * - `message` (string): Сообщение об ошибке, если значение не является логическим типом. По умолчанию пустая строка.
401
+ *
402
+ * ### Возвращаемое значение
403
+ *
404
+ * Возвращает `true`, если значение является логическим типом.
405
+ *
406
+ * ### Примеры использования
407
+ *
408
+ * 1. Проверка значения, являющегося логическим типом:
409
+ *
410
+ * ```js
411
+ * const value = true;
412
+ * const result = Type.expectBool(value);
413
+ * console.log(result); // true
414
+ * ```
415
+ *
416
+ * 2. Проверка значения, не являющегося логическим типом:
417
+ *
418
+ * ```js
419
+ * try {
420
+ * const result = Type.expectBool(123, 'Значение должно быть логическим типом.');
421
+ * } catch (e) {
422
+ * console.error(e.message); // Значение должно быть логическим типом.
423
+ * }
424
+ * ```
425
+ *
426
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
427
+ *
428
+ * ```js
429
+ * try {
430
+ * const result = Type.expectBool('true', 'Ожидался логический тип.');
431
+ * } catch (e) {
432
+ * console.error(e.message); // Ожидался логический тип.
433
+ * }
434
+ * ```
435
+ *
436
+ * @param {any} value Значение для проверки.
437
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является логическим типом.
438
+ * @returns {boolean} Возвращает `true`, если значение является логическим типом.
439
+ * @throws {TypeError} Если значение не является логическим типом или если параметр `message` не является строкой.
440
+ */
441
+ static expectBool(value, message = '') {
442
+ return expect_bool(value, message);
443
+ }
444
+
445
+ /**
446
+ * Проверяет, является ли значение логическим типом, и выбрасывает ошибку с указанным сообщением, если это не так.
447
+ *
448
+ * ### Описание
449
+ *
450
+ * Метод `expectBoolean` используется для проверки, является ли переданное значение логическим типом.
451
+ * Если значение не является логическим типом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
452
+ *
453
+ * ### Параметры
454
+ *
455
+ * - `value` (any): Значение для проверки.
456
+ * - `message` (string): Сообщение об ошибке, если значение не является логическим типом. По умолчанию пустая строка.
457
+ *
458
+ * ### Возвращаемое значение
459
+ *
460
+ * Возвращает `true`, если значение является логическим типом.
461
+ *
462
+ * ### Примеры использования
463
+ *
464
+ * 1. Проверка значения, являющегося логическим типом:
465
+ *
466
+ * ```js
467
+ * const value = true;
468
+ * const result = Type.expectBoolean(value);
469
+ * console.log(result); // true
470
+ * ```
471
+ *
472
+ * 2. Проверка значения, не являющегося логическим типом:
473
+ *
474
+ * ```js
475
+ * try {
476
+ * const result = Type.expectBoolean(123, 'Значение должно быть логическим типом.');
477
+ * } catch (e) {
478
+ * console.error(e.message); // Значение должно быть логическим типом.
479
+ * }
480
+ * ```
481
+ *
482
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
483
+ *
484
+ * ```js
485
+ * try {
486
+ * const result = Type.expectBoolean('true', 'Ожидался логический тип.');
487
+ * } catch (e) {
488
+ * console.error(e.message); // Ожидался логический тип.
489
+ * }
490
+ * ```
491
+ *
492
+ * @param {any} value Значение для проверки.
493
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является логическим типом.
494
+ * @returns {boolean} Возвращает `true`, если значение является логическим типом.
495
+ * @throws {TypeError} Если значение не является логическим типом или если параметр `message` не является строкой.
496
+ */
497
+ static expectBoolean(value, message = '') {
498
+ return expect_bool(value, message);
499
+ }
500
+
501
+ /**
502
+ * Проверяет, является ли значение символом, и выбрасывает ошибку с указанным сообщением, если это не так.
503
+ *
504
+ * ### Описание
505
+ *
506
+ * Метод `expectChar` используется для проверки, является ли переданное значение символом.
507
+ * Если значение не является символом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
508
+ *
509
+ * ### Параметры
510
+ *
511
+ * - `value` (any): Значение для проверки.
512
+ * - `message` (string): Сообщение об ошибке, если значение не является символом. По умолчанию пустая строка.
513
+ *
514
+ * ### Возвращаемое значение
515
+ *
516
+ * Возвращает `true`, если значение является символом.
517
+ *
518
+ * ### Примеры использования
519
+ *
520
+ * 1. Проверка значения, являющегося символом:
521
+ *
522
+ * ```js
523
+ * const value = 'a';
524
+ * const result = Type.expectChar(value);
525
+ * console.log(result); // true
526
+ * ```
527
+ *
528
+ * 2. Проверка значения, не являющегося символом:
529
+ *
530
+ * ```js
531
+ * try {
532
+ * const result = Type.expectChar('abc', 'Значение должно быть символом.');
533
+ * } catch (e) {
534
+ * console.error(e.message); // Значение должно быть символом.
535
+ * }
536
+ * ```
537
+ *
538
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
539
+ *
540
+ * ```js
541
+ * try {
542
+ * const result = Type.expectChar(123, 'Ожидался символ.');
543
+ * } catch (e) {
544
+ * console.error(e.message); // Ожидался символ.
545
+ * }
546
+ * ```
547
+ *
548
+ * @param {any} value Значение для проверки.
549
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является символом.
550
+ * @returns {boolean} Возвращает `true`, если значение является символом.
551
+ * @throws {TypeError} Если значение не является символом или если параметр `message` не является строкой.
552
+ */
553
+ static expectChar(value, message = '') {
554
+ return expect_char(value, message);
555
+ }
556
+
557
+ /**
558
+ * Проверяет, является ли значение классом, и выбрасывает ошибку с указанным сообщением, если это не так.
559
+ *
560
+ * ### Описание
561
+ *
562
+ * Метод `expectClass` используется для проверки, является ли переданное значение классом.
563
+ * Если значение не является классом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
564
+ *
565
+ * ### Параметры
566
+ *
567
+ * - `value` (any): Значение для проверки.
568
+ * - `message` (string): Сообщение об ошибке, если значение не является классом. По умолчанию пустая строка.
569
+ *
570
+ * ### Возвращаемое значение
571
+ *
572
+ * Возвращает `true`, если значение является классом.
573
+ *
574
+ * ### Примеры использования
575
+ *
576
+ * 1. Проверка значения, являющегося классом:
577
+ *
578
+ * ```js
579
+ * class MyClass {}
580
+ * const result = Type.expectClass(MyClass);
581
+ * console.log(result); // true
582
+ * ```
583
+ *
584
+ * 2. Проверка значения, не являющегося классом:
585
+ *
586
+ * ```js
587
+ * try {
588
+ * const result = Type.expectClass('not a class', 'Значение должно быть классом.');
589
+ * } catch (e) {
590
+ * console.error(e.message); // Значение должно быть классом.
591
+ * }
592
+ * ```
593
+ *
594
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
595
+ *
596
+ * ```js
597
+ * try {
598
+ * const result = Type.expectClass(123, 'Ожидался класс.');
599
+ * } catch (e) {
600
+ * console.error(e.message); // Ожидался класс.
601
+ * }
602
+ * ```
603
+ *
604
+ * @param {any} value Значение для проверки.
605
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является классом.
606
+ * @returns {boolean} Возвращает `true`, если значение является классом.
607
+ * @throws {TypeError} Если значение не является классом или если параметр `message` не является строкой.
608
+ */
609
+ static expectClass(value, message = '') {
610
+ return expect_class(value, message);
611
+ }
612
+
613
+ /**
614
+ * Проверяет, является ли значение числом с плавающей запятой, и выбрасывает ошибку с указанным сообщением, если это не так.
615
+ *
616
+ * ### Описание
617
+ *
618
+ * Метод `expectFloat` используется для проверки, является ли переданное значение числом с плавающей запятой.
619
+ * Если значение не является числом с плавающей запятой, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
620
+ *
621
+ * ### Параметры
622
+ *
623
+ * - `value` (any): Значение для проверки.
624
+ * - `message` (string): Сообщение об ошибке, если значение не является числом с плавающей запятой. По умолчанию пустая строка.
625
+ *
626
+ * ### Возвращаемое значение
627
+ *
628
+ * Возвращает `true`, если значение является числом с плавающей запятой.
629
+ *
630
+ * ### Примеры использования
631
+ *
632
+ * 1. Проверка значения, являющегося числом с плавающей запятой:
633
+ *
634
+ * ```js
635
+ * const value = 123.45;
636
+ * const result = Type.expectFloat(value);
637
+ * console.log(result); // true
638
+ * ```
639
+ *
640
+ * 2. Проверка значения, не являющегося числом с плавающей запятой:
641
+ *
642
+ * ```js
643
+ * try {
644
+ * const result = Type.expectFloat('123.45', 'Значение должно быть числом с плавающей запятой.');
645
+ * } catch (e) {
646
+ * console.error(e.message); // Значение должно быть числом с плавающей запятой.
647
+ * }
648
+ * ```
649
+ *
650
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
651
+ *
652
+ * ```js
653
+ * try {
654
+ * const result = Type.expectFloat(123, 'Ожидалось число с плавающей запятой.');
655
+ * } catch (e) {
656
+ * console.error(e.message); // Ожидалось число с плавающей запятой.
657
+ * }
658
+ * ```
659
+ *
660
+ * @param {any} value Значение для проверки.
661
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числом с плавающей запятой.
662
+ * @returns {boolean} Возвращает `true`, если значение является числом с плавающей запятой.
663
+ * @throws {TypeError} Если значение не является числом с плавающей запятой или если параметр `message` не является строкой.
664
+ */
665
+ static expectFloat(value, message = '') {
666
+ return expect_float(value, message);
667
+ }
668
+
669
+ /**
670
+ * Проверяет, является ли значение функцией, и выбрасывает ошибку с указанным сообщением, если это не так.
671
+ *
672
+ * ### Описание
673
+ *
674
+ * Метод `expectFunction` используется для проверки, является ли переданное значение функцией.
675
+ * Если значение не является функцией, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
676
+ *
677
+ * ### Параметры
678
+ *
679
+ * - `value` (any): Значение для проверки.
680
+ * - `message` (string): Сообщение об ошибке, если значение не является функцией. По умолчанию пустая строка.
681
+ *
682
+ * ### Возвращаемое значение
683
+ *
684
+ * Возвращает `true`, если значение является функцией.
685
+ *
686
+ * ### Примеры использования
687
+ *
688
+ * 1. Проверка значения, являющегося функцией:
689
+ *
690
+ * ```js
691
+ * function myFunction() {}
692
+ * const result = Type.expectFunction(myFunction);
693
+ * console.log(result); // true
694
+ * ```
695
+ *
696
+ * 2. Проверка значения, не являющегося функцией:
697
+ *
698
+ * ```js
699
+ * try {
700
+ * const result = Type.expectFunction(123, 'Значение должно быть функцией.');
701
+ * } catch (e) {
702
+ * console.error(e.message); // Значение должно быть функцией.
703
+ * }
704
+ * ```
705
+ *
706
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
707
+ *
708
+ * ```js
709
+ * try {
710
+ * const result = Type.expectFunction('not a function', 'Ожидалась функция.');
711
+ * } catch (e) {
712
+ * console.error(e.message); // Ожидалась функция.
713
+ * }
714
+ * ```
715
+ *
716
+ * @param {any} value Значение для проверки.
717
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является функцией.
718
+ * @returns {boolean} Возвращает `true`, если значение является функцией.
719
+ * @throws {TypeError} Если значение не является функцией или если параметр `message` не является строкой.
720
+ */
721
+ static expectFunction(value, message = '') {
722
+ return expect_function(value, message);
723
+ }
724
+
725
+ /**
726
+ * Проверяет, является ли значение бесконечностью, и выбрасывает ошибку с указанным сообщением, если это не так.
727
+ *
728
+ * ### Описание
729
+ *
730
+ * Метод `expectInfinity` используется для проверки, является ли переданное значение бесконечностью.
731
+ * Если значение не является бесконечностью, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
732
+ *
733
+ * ### Параметры
734
+ *
735
+ * - `value` (any): Значение для проверки.
736
+ * - `message` (string): Сообщение об ошибке, если значение не является бесконечностью. По умолчанию пустая строка.
737
+ *
738
+ * ### Возвращаемое значение
739
+ *
740
+ * Возвращает `true`, если значение является бесконечностью.
741
+ *
742
+ * ### Примеры использования
743
+ *
744
+ * 1. Проверка значения, являющегося бесконечностью:
745
+ *
746
+ * ```js
747
+ * const value = Infinity;
748
+ * const result = Type.expectInfinity(value);
749
+ * console.log(result); // true
750
+ * ```
751
+ *
752
+ * 2. Проверка значения, не являющегося бесконечностью:
753
+ *
754
+ * ```js
755
+ * try {
756
+ * const result = Type.expectInfinity(123, 'Значение должно быть бесконечностью.');
757
+ * } catch (e) {
758
+ * console.error(e.message); // Значение должно быть бесконечностью.
759
+ * }
760
+ * ```
761
+ *
762
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
763
+ *
764
+ * ```js
765
+ * try {
766
+ * const result = Type.expectInfinity('123', 'Ожидалась бесконечность.');
767
+ * } catch (e) {
768
+ * console.error(e.message); // Ожидалась бесконечность.
769
+ * }
770
+ * ```
771
+ *
772
+ * @param {any} value Значение для проверки.
773
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является бесконечностью.
774
+ * @returns {boolean} Возвращает `true`, если значение является бесконечностью.
775
+ * @throws {TypeError} Если значение не является бесконечностью или если параметр `message` не является строкой.
776
+ */
777
+ static expectInfinity(value, message = '') {
778
+ return expect_infinity(value, message);
779
+ }
780
+
781
+ /**
782
+ * Проверяет, является ли значение целым числом, и выбрасывает ошибку с указанным сообщением, если это не так.
783
+ *
784
+ * ### Описание
785
+ *
786
+ * Метод `expectInt` используется для проверки, является ли переданное значение целым числом.
787
+ * Если значение не является целым числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
788
+ *
789
+ * ### Параметры
790
+ *
791
+ * - `value` (any): Значение для проверки.
792
+ * - `message` (string): Сообщение об ошибке, если значение не является целым числом. По умолчанию пустая строка.
793
+ *
794
+ * ### Возвращаемое значение
795
+ *
796
+ * Возвращает `true`, если значение является целым числом.
797
+ *
798
+ * ### Примеры использования
799
+ *
800
+ * 1. Проверка значения, являющегося целым числом:
801
+ *
802
+ * ```js
803
+ * const value = 123;
804
+ * const result = Type.expectInt(value);
805
+ * console.log(result); // true
806
+ * ```
807
+ *
808
+ * 2. Проверка значения, не являющегося целым числом:
809
+ *
810
+ * ```js
811
+ * try {
812
+ * const result = Type.expectInt(123.45, 'Значение должно быть целым числом.');
813
+ * } catch (e) {
814
+ * console.error(e.message); // Значение должно быть целым числом.
815
+ * }
816
+ * ```
817
+ *
818
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
819
+ *
820
+ * ```js
821
+ * try {
822
+ * const result = Type.expectInt('123', 'Ожидалось целое число.');
823
+ * } catch (e) {
824
+ * console.error(e.message); // Ожидалось целое число.
825
+ * }
826
+ * ```
827
+ *
828
+ * @param {any} value Значение для проверки.
829
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является целым числом.
830
+ * @returns {boolean} Возвращает `true`, если значение является целым числом.
831
+ * @throws {TypeError} Если значение не является целым числом или если параметр `message` не является строкой.
832
+ */
833
+ static expectInt(value, message = '') {
834
+ return expect_int(value, message);
835
+ }
836
+
837
+ /**
838
+ * Проверяет, является ли значение целым числом, и выбрасывает ошибку с указанным сообщением, если это не так.
839
+ *
840
+ * ### Описание
841
+ *
842
+ * Метод `expectInteger` используется для проверки, является ли переданное значение целым числом.
843
+ * Если значение не является целым числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
844
+ *
845
+ * ### Параметры
846
+ *
847
+ * - `value` (any): Значение для проверки.
848
+ * - `message` (string): Сообщение об ошибке, если значение не является целым числом. По умолчанию пустая строка.
849
+ *
850
+ * ### Возвращаемое значение
851
+ *
852
+ * Возвращает `true`, если значение является целым числом.
853
+ *
854
+ * ### Примеры использования
855
+ *
856
+ * 1. Проверка значения, являющегося целым числом:
857
+ *
858
+ * ```js
859
+ * const value = 123;
860
+ * const result = Type.expectInteger(value);
861
+ * console.log(result); // true
862
+ * ```
863
+ *
864
+ * 2. Проверка значения, не являющегося целым числом:
865
+ *
866
+ * ```js
867
+ * try {
868
+ * const result = Type.expectInteger(123.45, 'Значение должно быть целым числом.');
869
+ * } catch (e) {
870
+ * console.error(e.message); // Значение должно быть целым числом.
871
+ * }
872
+ * ```
873
+ *
874
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
875
+ *
876
+ * ```js
877
+ * try {
878
+ * const result = Type.expectInteger('123', 'Ожидалось целое число.');
879
+ * } catch (e) {
880
+ * console.error(e.message); // Ожидалось целое число.
881
+ * }
882
+ * ```
883
+ *
884
+ * @param {any} value Значение для проверки.
885
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является целым числом.
886
+ * @returns {boolean} Возвращает `true`, если значение является целым числом.
887
+ * @throws {TypeError} Если значение не является целым числом или если параметр `message` не является строкой.
888
+ */
889
+ static expectInteger(value, message = '') {
890
+ return expect_integer(value, message);
891
+ }
892
+
893
+ /**
894
+ * Проверяет, является ли значение списком, и выбрасывает ошибку с указанным сообщением, если это не так.
895
+ *
896
+ * ### Описание
897
+ *
898
+ * Метод `expectList` используется для проверки, является ли переданное значение списком.
899
+ * Если значение не является списком, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
900
+ *
901
+ * ### Параметры
902
+ *
903
+ * - `value` (any): Значение для проверки.
904
+ * - `message` (string): Сообщение об ошибке, если значение не является списком. По умолчанию пустая строка.
905
+ *
906
+ * ### Возвращаемое значение
907
+ *
908
+ * Возвращает `true`, если значение является списком.
909
+ *
910
+ * ### Примеры использования
911
+ *
912
+ * 1. Проверка значения, являющегося списком:
913
+ *
914
+ * ```js
915
+ * const value = [1, 2, 3];
916
+ * const result = Type.expectList(value);
917
+ * console.log(result); // true
918
+ * ```
919
+ *
920
+ * 2. Проверка значения, не являющегося списком:
921
+ *
922
+ * ```js
923
+ * try {
924
+ * const result = Type.expectList('not a list', 'Значение должно быть списком.');
925
+ * } catch (e) {
926
+ * console.error(e.message); // Значение должно быть списком.
927
+ * }
928
+ * ```
929
+ *
930
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
931
+ *
932
+ * ```js
933
+ * try {
934
+ * const result = Type.expectList(123, 'Ожидался список.');
935
+ * } catch (e) {
936
+ * console.error(e.message); // Ожидался список.
937
+ * }
938
+ * ```
939
+ *
940
+ * @param {any} value Значение для проверки.
941
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является списком.
942
+ * @returns {boolean} Возвращает `true`, если значение является списком.
943
+ * @throws {TypeError} Если значение не является списком или если параметр `message` не является строкой.
944
+ */
945
+ static expectList(value, message = '') {
946
+ return expect_list(value, message);
947
+ }
948
+
949
+ /**
950
+ * Проверяет, является ли значение null, и выбрасывает ошибку с указанным сообщением, если это не так.
951
+ *
952
+ * ### Описание
953
+ *
954
+ * Метод `expectNull` используется для проверки, является ли переданное значение null.
955
+ * Если значение не является null, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
956
+ *
957
+ * ### Параметры
958
+ *
959
+ * - `value` (any): Значение для проверки.
960
+ * - `message` (string): Сообщение об ошибке, если значение не является null. По умолчанию пустая строка.
961
+ *
962
+ * ### Возвращаемое значение
963
+ *
964
+ * Возвращает `true`, если значение является null.
965
+ *
966
+ * ### Примеры использования
967
+ *
968
+ * 1. Проверка значения, являющегося null:
969
+ *
970
+ * ```js
971
+ * const value = null;
972
+ * const result = Type.expectNull(value);
973
+ * console.log(result); // true
974
+ * ```
975
+ *
976
+ * 2. Проверка значения, не являющегося null:
977
+ *
978
+ * ```js
979
+ * try {
980
+ * const result = Type.expectNull(123, 'Значение должно быть null.');
981
+ * } catch (e) {
982
+ * console.error(e.message); // Значение должно быть null.
983
+ * }
984
+ * ```
985
+ *
986
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
987
+ *
988
+ * ```js
989
+ * try {
990
+ * const result = Type.expectNull('not null', 'Ожидалось значение null.');
991
+ * } catch (e) {
992
+ * console.error(e.message); // Ожидалось значение null.
993
+ * }
994
+ * ```
995
+ *
996
+ * @param {any} value Значение для проверки.
997
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является null.
998
+ * @returns {boolean} Возвращает `true`, если значение является null.
999
+ * @throws {TypeError} Если значение не является null или если параметр `message` не является строкой.
1000
+ */
1001
+ static expectNaN(value, message = '') {
1002
+ return expect_nan(value, message);
1003
+ }
1004
+
1005
+ /**
1006
+ * Проверяет, является ли значение null, и выбрасывает ошибку с указанным сообщением, если это не так.
1007
+ *
1008
+ * ### Описание
1009
+ *
1010
+ * Метод `expectNull` используется для проверки, является ли переданное значение null.
1011
+ * Если значение не является null, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1012
+ *
1013
+ * ### Параметры
1014
+ *
1015
+ * - `value` (any): Значение для проверки.
1016
+ * - `message` (string): Сообщение об ошибке, если значение не является null. По умолчанию пустая строка.
1017
+ *
1018
+ * ### Возвращаемое значение
1019
+ *
1020
+ * Возвращает `true`, если значение является null.
1021
+ *
1022
+ * ### Примеры использования
1023
+ *
1024
+ * 1. Проверка значения, являющегося null:
1025
+ *
1026
+ * ```js
1027
+ * const value = null;
1028
+ * const result = Type.expectNull(value);
1029
+ * console.log(result); // true
1030
+ * ```
1031
+ *
1032
+ * 2. Проверка значения, не являющегося null:
1033
+ *
1034
+ * ```js
1035
+ * try {
1036
+ * const result = Type.expectNull(123, 'Значение должно быть null.');
1037
+ * } catch (e) {
1038
+ * console.error(e.message); // Значение должно быть null.
1039
+ * }
1040
+ * ```
1041
+ *
1042
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1043
+ *
1044
+ * ```js
1045
+ * try {
1046
+ * const result = Type.expectNull('not null', 'Ожидалось значение null.');
1047
+ * } catch (e) {
1048
+ * console.error(e.message); // Ожидалось значение null.
1049
+ * }
1050
+ * ```
1051
+ *
1052
+ * @param {any} value Значение для проверки.
1053
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является null.
1054
+ * @returns {boolean} Возвращает `true`, если значение является null.
1055
+ * @throws {TypeError} Если значение не является null или если параметр `message` не является строкой.
1056
+ */
1057
+ static expectNull(value, message = '') {
1058
+ return expect_null(value, message);
1059
+ }
1060
+
1061
+ /**
1062
+ * Проверяет, является ли значение числом, и выбрасывает ошибку с указанным сообщением, если это не так.
1063
+ *
1064
+ * ### Описание
1065
+ *
1066
+ * Метод `expectNumber` используется для проверки, является ли переданное значение числом.
1067
+ * Если значение не является числом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1068
+ *
1069
+ * ### Параметры
1070
+ *
1071
+ * - `value` (any): Значение для проверки.
1072
+ * - `message` (string): Сообщение об ошибке, если значение не является числом. По умолчанию пустая строка.
1073
+ *
1074
+ * ### Возвращаемое значение
1075
+ *
1076
+ * Возвращает `true`, если значение является числом.
1077
+ *
1078
+ * ### Примеры использования
1079
+ *
1080
+ * 1. Проверка значения, являющегося числом:
1081
+ *
1082
+ * ```js
1083
+ * const value = 123;
1084
+ * const result = Type.expectNumber(value);
1085
+ * console.log(result); // true
1086
+ * ```
1087
+ *
1088
+ * 2. Проверка значения, не являющегося числом:
1089
+ *
1090
+ * ```js
1091
+ * try {
1092
+ * const result = Type.expectNumber('123', 'Значение должно быть числом.');
1093
+ * } catch (e) {
1094
+ * console.error(e.message); // Значение должно быть числом.
1095
+ * }
1096
+ * ```
1097
+ *
1098
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1099
+ *
1100
+ * ```js
1101
+ * try {
1102
+ * const result = Type.expectNumber('not a number', 'Ожидалось число.');
1103
+ * } catch (e) {
1104
+ * console.error(e.message); // Ожидалось число.
1105
+ * }
1106
+ * ```
1107
+ *
1108
+ * @param {any} value Значение для проверки.
1109
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числом.
1110
+ * @returns {boolean} Возвращает `true`, если значение является числом.
1111
+ * @throws {TypeError} Если значение не является числом или если параметр `message` не является строкой.
1112
+ */
1113
+ static expectNumber(value, message = '') {
1114
+ return expect_number(value, message);
1115
+ }
1116
+
1117
+ /**
1118
+ * Проверяет, является ли значение числовым, и выбрасывает ошибку с указанным сообщением, если это не так.
1119
+ *
1120
+ * ### Описание
1121
+ *
1122
+ * Метод `expectNumeric` используется для проверки, является ли переданное значение числовым.
1123
+ * Если значение не является числовым, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1124
+ *
1125
+ * ### Параметры
1126
+ *
1127
+ * - `value` (any): Значение для проверки.
1128
+ * - `message` (string): Сообщение об ошибке, если значение не является числовым. По умолчанию пустая строка.
1129
+ *
1130
+ * ### Возвращаемое значение
1131
+ *
1132
+ * Возвращает `true`, если значение является числовым.
1133
+ *
1134
+ * ### Примеры использования
1135
+ *
1136
+ * 1. Проверка значения, являющегося числовым:
1137
+ *
1138
+ * ```js
1139
+ * const value = '123';
1140
+ * const result = Type.expectNumeric(value);
1141
+ * console.log(result); // true
1142
+ * ```
1143
+ *
1144
+ * 2. Проверка значения, не являющегося числовым:
1145
+ *
1146
+ * ```js
1147
+ * try {
1148
+ * const result = Type.expectNumeric('abc', 'Значение должно быть числовым.');
1149
+ * } catch (e) {
1150
+ * console.error(e.message); // Значение должно быть числовым.
1151
+ * }
1152
+ * ```
1153
+ *
1154
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1155
+ *
1156
+ * ```js
1157
+ * try {
1158
+ * const result = Type.expectNumeric({}, 'Ожидалось числовое значение.');
1159
+ * } catch (e) {
1160
+ * console.error(e.message); // Ожидалось числовое значение.
1161
+ * }
1162
+ * ```
1163
+ *
1164
+ * @param {any} value Значение для проверки.
1165
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является числовым.
1166
+ * @returns {boolean} Возвращает `true`, если значение является числовым.
1167
+ * @throws {TypeError} Если значение не является числовым или если параметр `message` не является строкой.
1168
+ */
1169
+ static expectNumeric(value, message = '') {
1170
+ return expect_numeric(value, message);
1171
+ }
1172
+
1173
+ /**
1174
+ * Проверяет, является ли значение объектом, и выбрасывает ошибку с указанным сообщением, если это не так.
1175
+ *
1176
+ * ### Описание
1177
+ *
1178
+ * Метод `expectObject` используется для проверки, является ли переданное значение объектом.
1179
+ * Если значение не является объектом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1180
+ *
1181
+ * ### Параметры
1182
+ *
1183
+ * - `value` (any): Значение для проверки.
1184
+ * - `message` (string): Сообщение об ошибке, если значение не является объектом. По умолчанию пустая строка.
1185
+ *
1186
+ * ### Возвращаемое значение
1187
+ *
1188
+ * Возвращает `true`, если значение является объектом.
1189
+ *
1190
+ * ### Примеры использования
1191
+ *
1192
+ * 1. Проверка значения, являющегося объектом:
1193
+ *
1194
+ * ```js
1195
+ * class stdClass {}
1196
+ * const value = new stdClass();
1197
+ * const result = Type.expectObject(value);
1198
+ * console.log(result); // true
1199
+ * ```
1200
+ *
1201
+ * 2. Проверка значения, не являющегося объектом:
1202
+ *
1203
+ * ```js
1204
+ * try {
1205
+ * const result = Type.expectObject(123, 'Значение должно быть объектом.');
1206
+ * } catch (e) {
1207
+ * console.error(e.message); // Значение должно быть объектом.
1208
+ * }
1209
+ * ```
1210
+ *
1211
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1212
+ *
1213
+ * ```js
1214
+ * try {
1215
+ * const result = Type.expectObject('not an object', 'Ожидался объект.');
1216
+ * } catch (e) {
1217
+ * console.error(e.message); // Ожидался объект.
1218
+ * }
1219
+ * ```
1220
+ *
1221
+ * @param {any} value Значение для проверки.
1222
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является объектом.
1223
+ * @returns {boolean} Возвращает `true`, если значение является объектом.
1224
+ * @throws {TypeError} Если значение не является объектом или если параметр `message` не является строкой.
1225
+ */
1226
+ static expectObject(value, message = '') {
1227
+ return expect_object(value, message);
1228
+ }
1229
+
1230
+ /**
1231
+ * Проверяет, является ли значение скалярным, и выбрасывает ошибку с указанным сообщением, если это не так.
1232
+ *
1233
+ * ### Описание
1234
+ *
1235
+ * Метод `expectScalar` используется для проверки, является ли переданное значение скалярным.
1236
+ * Если значение не является скалярным, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1237
+ *
1238
+ * ### Параметры
1239
+ *
1240
+ * - `value` (any): Значение для проверки.
1241
+ * - `message` (string): Сообщение об ошибке, если значение не является скалярным. По умолчанию пустая строка.
1242
+ *
1243
+ * ### Возвращаемое значение
1244
+ *
1245
+ * Возвращает `true`, если значение является скалярным.
1246
+ *
1247
+ * ### Примеры использования
1248
+ *
1249
+ * 1. Проверка значения, являющегося скалярным:
1250
+ *
1251
+ * ```js
1252
+ * const value = 123;
1253
+ * const result = Type.expectScalar(value);
1254
+ * console.log(result); // true
1255
+ * ```
1256
+ *
1257
+ * 2. Проверка значения, не являющегося скалярным:
1258
+ *
1259
+ * ```js
1260
+ * try {
1261
+ * const result = Type.expectScalar([1, 2, 3], 'Значение должно быть скалярным.');
1262
+ * } catch (e) {
1263
+ * console.error(e.message); // Значение должно быть скалярным.
1264
+ * }
1265
+ * ```
1266
+ *
1267
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1268
+ *
1269
+ * ```js
1270
+ * try {
1271
+ * const result = Type.expectScalar({}, 'Ожидалось скалярное значение.');
1272
+ * } catch (e) {
1273
+ * console.error(e.message); // Ожидалось скалярное значение.
1274
+ * }
1275
+ * ```
1276
+ *
1277
+ * @param {any} value Значение для проверки.
1278
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является скалярным.
1279
+ * @returns {boolean} Возвращает `true`, если значение является скалярным.
1280
+ * @throws {TypeError} Если значение не является скалярным или если параметр `message` не является строкой.
1281
+ */
1282
+ static expectScalar(value, message = '') {
1283
+ return expect_scalar(value, message);
1284
+ }
1285
+
1286
+ /**
1287
+ * Проверяет, является ли значение строкой, и выбрасывает ошибку с указанным сообщением, если это не так.
1288
+ *
1289
+ * ### Описание
1290
+ *
1291
+ * Метод `expectString` используется для проверки, является ли переданное значение строкой.
1292
+ * Если значение не является строкой, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1293
+ *
1294
+ * ### Параметры
1295
+ *
1296
+ * - `value` (any): Значение для проверки.
1297
+ * - `message` (string): Сообщение об ошибке, если значение не является строкой. По умолчанию пустая строка.
1298
+ *
1299
+ * ### Возвращаемое значение
1300
+ *
1301
+ * Возвращает `true`, если значение является строкой.
1302
+ *
1303
+ * ### Примеры использования
1304
+ *
1305
+ * 1. Проверка значения, являющегося строкой:
1306
+ *
1307
+ * ```js
1308
+ * const value = 'Hello, world!';
1309
+ * const result = Type.expectString(value);
1310
+ * console.log(result); // true
1311
+ * ```
1312
+ *
1313
+ * 2. Проверка значения, не являющегося строкой:
1314
+ *
1315
+ * ```js
1316
+ * try {
1317
+ * const result = Type.expectString(123, 'Значение должно быть строкой.');
1318
+ * } catch (e) {
1319
+ * console.error(e.message); // Значение должно быть строкой.
1320
+ * }
1321
+ * ```
1322
+ *
1323
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1324
+ *
1325
+ * ```js
1326
+ * try {
1327
+ * const result = Type.expectString({}, 'Ожидалась строка.');
1328
+ * } catch (e) {
1329
+ * console.error(e.message); // Ожидалась строка.
1330
+ * }
1331
+ * ```
1332
+ *
1333
+ * @param {any} value Значение для проверки.
1334
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является строкой.
1335
+ * @returns {boolean} Возвращает `true`, если значение является строкой.
1336
+ * @throws {TypeError} Если значение не является строкой или если параметр `message` не является строкой.
1337
+ */
1338
+ static expectString(value, message = '') {
1339
+ return expect_string(value, message);
1340
+ }
1341
+
1342
+ /**
1343
+ * Проверяет, является ли значение символом, и выбрасывает ошибку с указанным сообщением, если это не так.
1344
+ *
1345
+ * ### Описание
1346
+ *
1347
+ * Метод `expectSymbol` используется для проверки, является ли переданное значение символом.
1348
+ * Если значение не является символом, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1349
+ *
1350
+ * ### Параметры
1351
+ *
1352
+ * - `value` (any): Значение для проверки.
1353
+ * - `message` (string): Сообщение об ошибке, если значение не является символом. По умолчанию пустая строка.
1354
+ *
1355
+ * ### Возвращаемое значение
1356
+ *
1357
+ * Возвращает `true`, если значение является символом.
1358
+ *
1359
+ * ### Примеры использования
1360
+ *
1361
+ * 1. Проверка значения, являющегося символом:
1362
+ *
1363
+ * ```js
1364
+ * const value = Symbol('example');
1365
+ * const result = Type.expectSymbol(value);
1366
+ * console.log(result); // true
1367
+ * ```
1368
+ *
1369
+ * 2. Проверка значения, не являющегося символом:
1370
+ *
1371
+ * ```js
1372
+ * try {
1373
+ * const result = Type.expectSymbol('not a symbol', 'Значение должно быть символом.');
1374
+ * } catch (e) {
1375
+ * console.error(e.message); // Значение должно быть символом.
1376
+ * }
1377
+ * ```
1378
+ *
1379
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1380
+ *
1381
+ * ```js
1382
+ * try {
1383
+ * const result = Type.expectSymbol(123, 'Ожидался символ.');
1384
+ * } catch (e) {
1385
+ * console.error(e.message); // Ожидался символ.
1386
+ * }
1387
+ * ```
1388
+ *
1389
+ * @param {any} value Значение для проверки.
1390
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является символом.
1391
+ * @returns {boolean} Возвращает `true`, если значение является символом.
1392
+ * @throws {TypeError} Если значение не является символом или если параметр `message` не является строкой.
1393
+ */
1394
+ static expectSymbol(value, message = '') {
1395
+ return expect_symbol(value, message);
1396
+ }
1397
+
1398
+ /**
1399
+ * Проверяет, является ли значение undefined, и выбрасывает ошибку с указанным сообщением, если это не так.
1400
+ *
1401
+ * ### Описание
1402
+ *
1403
+ * Метод `expectUndefined` используется для проверки, является ли переданное значение undefined.
1404
+ * Если значение не является undefined, метод выбрасывает ошибку типа `TypeError` с указанным сообщением.
1405
+ *
1406
+ * ### Параметры
1407
+ *
1408
+ * - `value` (any): Значение для проверки.
1409
+ * - `message` (string): Сообщение об ошибке, если значение не является undefined. По умолчанию пустая строка.
1410
+ *
1411
+ * ### Возвращаемое значение
1412
+ *
1413
+ * Возвращает `true`, если значение является undefined.
1414
+ *
1415
+ * ### Примеры использования
1416
+ *
1417
+ * 1. Проверка значения, являющегося undefined:
1418
+ *
1419
+ * ```js
1420
+ * let value;
1421
+ * const result = Type.expectUndefined(value);
1422
+ * console.log(result); // true
1423
+ * ```
1424
+ *
1425
+ * 2. Проверка значения, не являющегося undefined:
1426
+ *
1427
+ * ```js
1428
+ * try {
1429
+ * const result = Type.expectUndefined(123, 'Значение должно быть undefined.');
1430
+ * } catch (e) {
1431
+ * console.error(e.message); // Значение должно быть undefined.
1432
+ * }
1433
+ * ```
1434
+ *
1435
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
1436
+ *
1437
+ * ```js
1438
+ * try {
1439
+ * const result = Type.expectUndefined('not undefined', 'Ожидалось значение undefined.');
1440
+ * } catch (e) {
1441
+ * console.error(e.message); // Ожидалось значение undefined.
1442
+ * }
1443
+ * ```
1444
+ *
1445
+ * @param {any} value Значение для проверки.
1446
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является undefined.
1447
+ * @returns {boolean} Возвращает `true`, если значение является undefined.
1448
+ * @throws {TypeError} Если значение не является undefined или если параметр `message` не является строкой.
1449
+ */
1450
+ static expectUndefined(value, message = '') {
1451
+ return expect_undefined(value, message);
1452
+ }
1453
+
1454
+ /**
1455
+ * Проверяет, является ли переменная пустой.
1456
+ *
1457
+ * ### Описание
1458
+ *
1459
+ * Метод `Type.isEmpty` используется для проверки, является ли переменная пустой. Пустыми считаются значения `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект.
1460
+ *
1461
+ * ### Параметры
1462
+ *
1463
+ * - `value` (any)
1464
+ * Переменная, которую необходимо проверить на пустоту.
1465
+ *
1466
+ * ### Возвращаемое значение
1467
+ *
1468
+ * Возвращает `true`, если переменная пустая, и `false` в противном случае.
1469
+ *
1470
+ * ### Примеры использования
1471
+ *
1472
+ * 1. Проверка пустых значений:
1473
+ *
1474
+ * ```js
1475
+ * const result1 = Type.isEmpty(null);
1476
+ * // Результат: true
1477
+ *
1478
+ * const result2 = Type.isEmpty(undefined);
1479
+ * // Результат: true
1480
+ *
1481
+ * const result3 = Type.isEmpty('');
1482
+ * // Результат: true
1483
+ *
1484
+ * const result4 = Type.isEmpty(0);
1485
+ * // Результат: true
1486
+ *
1487
+ * const result5 = Type.isEmpty(false);
1488
+ * // Результат: true
1489
+ *
1490
+ * const result6 = Type.isEmpty([]);
1491
+ * // Результат: true
1492
+ *
1493
+ * const result7 = Type.isEmpty({});
1494
+ * // Результат: true
1495
+ * ```
1496
+ *
1497
+ * 2. Проверка непустых значений:
1498
+ *
1499
+ * ```js
1500
+ * const result1 = Type.isEmpty('example');
1501
+ * // Результат: false
1502
+ *
1503
+ * const result2 = Type.isEmpty(123);
1504
+ * // Результат: false
1505
+ *
1506
+ * const result3 = Type.isEmpty(true);
1507
+ * // Результат: false
1508
+ *
1509
+ * const result4 = Type.isEmpty([1, 2, 3]);
1510
+ * // Результат: false
1511
+ *
1512
+ * const result5 = Type.isEmpty({ key: 'value' });
1513
+ * // Результат: false
1514
+ * ```
1515
+ *
1516
+ * @param {any} value Переменная, которую необходимо проверить на пустоту.
1517
+ * @returns {boolean} Возвращает `true`, если переменная пустая, и `false` в противном случае.
1518
+ */
1519
+ static isEmpty(value) {
1520
+ return empty(value);
1521
+ }
1522
+
1523
+ /**
1524
+ * Проверяет, является ли переданное значение массивом или ассоциативным массивом (объектом с ключами и значениями).
1525
+ *
1526
+ * ### Описание
1527
+ *
1528
+ * В JavaScript массивы и объекты имеют разные структуры и предназначения:
1529
+ *
1530
+ * - Массивы (Array) являются упорядоченными коллекциями элементов, которые могут быть индексированы.
1531
+ * - Объекты (Object) содержат пары "ключ-значение", которые могут быть неупорядоченными.
1532
+ *
1533
+ * Этот метод проверяет, является ли переданное значение обычным массивом (например, `[1, 2, 3]`),
1534
+ * либо ассоциативным массивом (объектом с парами "ключ-значение", например, `{foo: 'bar'}`).
1535
+ *
1536
+ * ### Алгоритм работы метода
1537
+ *
1538
+ * 1. Сначала проверяется, является ли переданное значение обычным массивом с помощью встроенного метода `Array.isArray(value)`. Если это массив, метод сразу возвращает `true`.
1539
+ *
1540
+ * 2. Если переменная не является массивом, то выполняются дополнительные проверки:
1541
+ *
1542
+ * - Проверяется, что значение не равно `null` (так как `null` в JavaScript также является объектом, но не является ни массивом, ни объектом с парами "ключ-значение").
1543
+ * - Проверяется, что значение является объектом JavaScript (с помощью `typeof value === 'object'`).
1544
+ * - Проверяется, что прототип объекта совпадает с `Object.prototype` (это объект, от которого наследуются все объекты в JavaScript) или является `null` (это означает, что объект был создан с помощью `Object.create(null)` и не имеет прототипа).
1545
+ * - Исключаются массивоподобные объекты (например, `arguments`, `NodeList`), путем проверки, что свойство `length` не является собственным свойством объекта.
1546
+ * - Дополнительно проверяется, что объект является простым (его конструктор равен `Object`), а также исключаются встроенные объекты (`Math`, `JSON`, `Reflect`, `Intl`), для которых метод возвращает `true`.
1547
+ *
1548
+ * ### Параметры
1549
+ *
1550
+ * - `value` (any)
1551
+ * Проверяемая переменная.
1552
+ *
1553
+ * ### Возвращаемое значение
1554
+ *
1555
+ * Возвращает `true`, если переменная является обычным массивом (`Array`), ассоциативным массивом (объектом с парами "ключ-значение"), ассоциативным массивом, созданным с помощью `Object.create(null)`. В остальных случаях метод возвращает `false`.
1556
+ *
1557
+ * ### Примеры использования
1558
+ *
1559
+ * 1. Простые массивы:
1560
+ *
1561
+ * ```js
1562
+ * Type.isArray([1, 2, 3]); // true
1563
+ * Type.isArray([]); // true
1564
+ * ```
1565
+ *
1566
+ * 2. Ассоциативные массивы (объекты с ключами и значениями):
1567
+ *
1568
+ * ```js
1569
+ * Type.isArray({ foo: 'bar', baz: 42 }); // true
1570
+ * Type.isArray({ '0': 'a', '1': 'b' }); // true
1571
+ * ```
1572
+ *
1573
+ * 3. Объекты, созданные без прототипа:
1574
+ *
1575
+ * ```js
1576
+ * const noProtoObject = Object.create(null);
1577
+ * noProtoObject.foo = 'bar';
1578
+ * Type.isArray(noProtoObject); // true
1579
+ * ```
1580
+ *
1581
+ * 4. Примитивы и невалидные значения:
1582
+ *
1583
+ * ```js
1584
+ * Type.isArray(null); // false
1585
+ * Type.isArray(undefined); // false
1586
+ * Type.isArray(42); // false
1587
+ * Type.isArray('hello'); // false
1588
+ * ```
1589
+ *
1590
+ * 5. Специальные объекты:
1591
+ *
1592
+ * ```js
1593
+ * Type.isArray(new Map()); // false
1594
+ * Type.isArray(new Set()); // false
1595
+ * Type.isArray(() => {}); // false
1596
+ * ```
1597
+ *
1598
+ * 6. Классы и их экземпляры:
1599
+ *
1600
+ * ```js
1601
+ * class MyClass {}
1602
+ * const instance = new MyClass();
1603
+ * Type.isArray(instance); // false
1604
+ * ```
1605
+ *
1606
+ * @param {any} value Проверяемая переменная.
1607
+ * @returns {boolean} Возвращает `true`, если значение является массивом или ассоциативным массивом, иначе `false`.
1608
+ */
1609
+ static isArray(value) {
1610
+ return is_array(value);
1611
+ }
1612
+
1613
+ /**
1614
+ * Проверяет, является ли значение ассоциативным массивом.
1615
+ *
1616
+ * ### Описание
1617
+ *
1618
+ * Ассоциативные массивы в JavaScript представляют собой объекты с парами "ключ-значение".
1619
+ * Этот метод проверяет, является ли переданное значение ассоциативным массивом.
1620
+ *
1621
+ * Метод использует функцию `is_array` для проверки значения и убеждается, что значение не является обычным массивом.
1622
+ *
1623
+ * ### Параметры
1624
+ *
1625
+ * - `value` (any)
1626
+ * Значение, которое необходимо проверить.
1627
+ *
1628
+ * ### Возвращаемое значение
1629
+ *
1630
+ * Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
1631
+ *
1632
+ * ### Примеры использования
1633
+ *
1634
+ * 1. Ассоциативные массивы:
1635
+ *
1636
+ * ```js
1637
+ * Type.isAssoc({ foo: 'bar' }); // true
1638
+ * Type.isAssoc({}); // true
1639
+ * ```
1640
+ *
1641
+ * 2. Обычные массивы:
1642
+ *
1643
+ * ```js
1644
+ * Type.isAssoc([]); // false
1645
+ * Type.isAssoc([1, 2, 3]); // false
1646
+ * ```
1647
+ *
1648
+ * 3. Значения других типов:
1649
+ *
1650
+ * ```js
1651
+ * Type.isAssoc('string'); // false
1652
+ * Type.isAssoc(42); // false
1653
+ * Type.isAssoc(null); // false
1654
+ * Type.isAssoc(undefined); // false
1655
+ * ```
1656
+ *
1657
+ * @param {any} value Значение, которое необходимо проверить.
1658
+ * @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
1659
+ */
1660
+ static isAssoc(value) {
1661
+ return is_assoc(value);
1662
+ }
1663
+
1664
+ /**
1665
+ * Проверяет, является ли значение типом `bigint`.
1666
+ *
1667
+ * ### Описание
1668
+ *
1669
+ * Метод `Type.isBigInt` проверяет, является ли переданное значение типом `bigint`.
1670
+ *
1671
+ * ### Параметры
1672
+ *
1673
+ * - `value` (any)
1674
+ * Значение, которое необходимо проверить.
1675
+ *
1676
+ * ### Возвращаемое значение
1677
+ *
1678
+ * Возвращает `true`, если значение является типом `bigint`, и `false` в противном случае.
1679
+ *
1680
+ * ### Примеры использования
1681
+ *
1682
+ * #### Пример 1: Проверка значений типа bigint
1683
+ *
1684
+ * ```js
1685
+ * Type.isBigInt(BigInt(123456)); // true
1686
+ * Type.isBigInt(BigInt(-123456)); // true
1687
+ * ```
1688
+ *
1689
+ * #### Пример 2: Проверка значений других типов
1690
+ *
1691
+ * ```js
1692
+ * Type.isBigInt(42); // false (число)
1693
+ * Type.isBigInt('42'); // false (строка)
1694
+ * Type.isBigInt(true); // false (логическое значение)
1695
+ * Type.isBigInt(null); // false
1696
+ * Type.isBigInt(undefined); // false
1697
+ * Type.isBigInt({}); // false (объект)
1698
+ * Type.isBigInt([]); // false (массив)
1699
+ * ```
1700
+ *
1701
+ * @param {any} value Значение, которое необходимо проверить.
1702
+ * @returns {boolean} Возвращает `true`, если значение является типом bigint, и `false` в противном случае.
1703
+ */
1704
+ static isBigInt(value) {
1705
+ return is_bigint(value);
1706
+ }
1707
+
1708
+ /**
1709
+ * Проверяет, является ли переданное значение логическим типом (`boolean`).
1710
+ *
1711
+ * ### Описание
1712
+ *
1713
+ * В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
1714
+ * Метод проверяет тип переданного значения с использованием оператора `typeof`.
1715
+ * Если значение является примитивом типа `boolean`, метод возвращает `true`.
1716
+ * Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) метод вернёт `false`.
1717
+ *
1718
+ * #### Примечание
1719
+ *
1720
+ * - Метод возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
1721
+ * - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
1722
+ *
1723
+ * ### Параметры
1724
+ *
1725
+ * - `value` (any):
1726
+ * Проверяемая переменная.
1727
+ *
1728
+ * ### Возвращаемое значение
1729
+ *
1730
+ * Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
1731
+ *
1732
+ * ### Примеры использования
1733
+ *
1734
+ * ```js
1735
+ * Type.isBool(true); // Возвращает: true
1736
+ * Type.isBool(false); // Возвращает: true
1737
+ * Type.isBool(0); // Возвращает: false
1738
+ * Type.isBool('true'); // Возвращает: false
1739
+ * Type.isBool(null); // Возвращает: false
1740
+ * Type.isBool([]); // Возвращает: false
1741
+ * Type.isBool({}); // Возвращает: false
1742
+ * Type.isBool(new Boolean(true)); // Возвращает: false
1743
+ * ```
1744
+ *
1745
+ * @param {any} value Проверяемая переменная.
1746
+ * @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
1747
+ */
1748
+ static isBool(value) {
1749
+ return is_bool(value);
1750
+ }
1751
+
1752
+ /**
1753
+ * Проверяет, является ли переданное значение логическим типом (`boolean`).
1754
+ *
1755
+ * ### Описание
1756
+ *
1757
+ * В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
1758
+ * Метод проверяет тип переданного значения с использованием оператора `typeof`.
1759
+ * Если значение является примитивом типа `boolean`, метод возвращает `true`.
1760
+ * Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) метод вернёт `false`.
1761
+ *
1762
+ * #### Примечание
1763
+ *
1764
+ * - Метод возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
1765
+ * - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
1766
+ *
1767
+ * ### Параметры
1768
+ *
1769
+ * - `value` (any):
1770
+ * Проверяемая переменная.
1771
+ *
1772
+ * ### Возвращаемое значение
1773
+ *
1774
+ * Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
1775
+ *
1776
+ * ### Примеры использования
1777
+ *
1778
+ * ```js
1779
+ * Type.isBoolean(true); // Возвращает: true
1780
+ * Type.isBoolean(false); // Возвращает: true
1781
+ * Type.isBoolean(0); // Возвращает: false
1782
+ * Type.isBoolean('true'); // Возвращает: false
1783
+ * Type.isBoolean(null); // Возвращает: false
1784
+ * Type.isBoolean([]); // Возвращает: false
1785
+ * Type.isBoolean({}); // Возвращает: false
1786
+ * Type.isBoolean(new Boolean(true)); // Возвращает: false
1787
+ * ```
1788
+ *
1789
+ * @param {any} value Проверяемая переменная.
1790
+ * @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
1791
+ */
1792
+ static isBoolean(value) {
1793
+ return is_bool(value);
1794
+ }
1795
+
1796
+ /**
1797
+ * Проверяет, является ли переданная переменная классом.
1798
+ *
1799
+ * ### Параметры
1800
+ *
1801
+ * - `value` (any)
1802
+ * Проверяемая переменная.
1803
+ *
1804
+ * ### Описание
1805
+ *
1806
+ * В JavaScript классы являются функциями, но с уникальным поведением.
1807
+ *
1808
+ * Для определения класса метод проверяет:
1809
+ *
1810
+ * 1. Что переданная переменная является функцией.
1811
+ * 2. Что строковое представление функции начинается с `class `.
1812
+ *
1813
+ * #### Примечание
1814
+ *
1815
+ * Конструкторы функций, созданные с помощью `function`, не будут распознаны как классы.
1816
+ *
1817
+ * Для примера:
1818
+ *
1819
+ * ```js
1820
+ * function Foo() {}
1821
+ * Type.isClass(Foo); // Возвращает: false
1822
+ * ```
1823
+ *
1824
+ * В отличие от классов, которые выглядят так:
1825
+ *
1826
+ * ```js
1827
+ * class MyClass {}
1828
+ * Type.isClass(MyClass); // Возвращает: true
1829
+ * ```
1830
+ *
1831
+ * ### Возвращаемое значение
1832
+ *
1833
+ * Возвращает `true`, если значение является классом, иначе `false`.
1834
+ *
1835
+ * ### Примеры использования
1836
+ *
1837
+ * 1. Классы:
1838
+ *
1839
+ * ```js
1840
+ * class MyClass {}
1841
+ * Type.isClass(MyClass); // true
1842
+ * ```
1843
+ *
1844
+ * 2. Функции-конструкторы:
1845
+ *
1846
+ * ```js
1847
+ * function MyFunction() {}
1848
+ * Type.isClass(MyFunction); // false
1849
+ * ```
1850
+ *
1851
+ * 3. Объекты и примитивы:
1852
+ *
1853
+ * ```js
1854
+ * Type.isClass({}); // false
1855
+ * Type.isClass([]); // false
1856
+ * Type.isClass(null); // false
1857
+ * Type.isClass(42); // false
1858
+ * ```
1859
+ *
1860
+ * @param {any} value Проверяемая переменная.
1861
+ * @returns {boolean} Возвращает `true`, если значение является классом, иначе `false`.
1862
+ */
1863
+ static isClass(value) {
1864
+ return is_class(value);
1865
+ }
1866
+
1867
+ /**
1868
+ * Проверяет, является ли значение числом с плавающей точкой.
1869
+ *
1870
+ * ### Параметры
1871
+ *
1872
+ * - `value` (any)
1873
+ * Значение для проверки.
1874
+ *
1875
+ * ### Описание
1876
+ *
1877
+ * Метод `Type.isFloat` проверяет, является ли переданное значение числом с дробной частью, которое отличается от целого числа.
1878
+ *
1879
+ * Она работает следующим образом:
1880
+ *
1881
+ * 1. Проверяет, что значение имеет тип `number`.
1882
+ * 2. Исключает значения `NaN`, которые также относятся к типу `number`, но не считаются числовыми значениями.
1883
+ * 3. Проверяет, что у числа есть дробная часть, проверяя остаток от деления на `1` (`value % 1 !== 0`).
1884
+ *
1885
+ * Значения, которые не являются числами или числа без дробной части, не считаются числами с плавающей точкой.
1886
+ *
1887
+ * ### Возвращаемое значение
1888
+ *
1889
+ * Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
1890
+ *
1891
+ * ### Примеры использования
1892
+ *
1893
+ * #### Числа с плавающей точкой
1894
+ *
1895
+ * ```js
1896
+ * Type.isFloat(3.14); // true
1897
+ * Type.isFloat(-0.5); // true
1898
+ * Type.isFloat(0.1 + 0.2); // true
1899
+ * ```
1900
+ *
1901
+ * #### Целые числа
1902
+ *
1903
+ * ```js
1904
+ * Type.isFloat(0); // false
1905
+ * Type.isFloat(42); // false
1906
+ * Type.isFloat(-100); // false
1907
+ * ```
1908
+ *
1909
+ * #### Нечисловые значения
1910
+ *
1911
+ * ```js
1912
+ * Type.isFloat('3.14'); // false
1913
+ * Type.isFloat(NaN); // false
1914
+ * Type.isFloat(null); // false
1915
+ * Type.isFloat(undefined); // false
1916
+ * Type.isFloat(true); // false
1917
+ * Type.isFloat({}); // false
1918
+ * Type.isFloat([]); // false
1919
+ * ```
1920
+ *
1921
+ * #### Специальные значения
1922
+ *
1923
+ * ```js
1924
+ * Type.isFloat(Infinity); // false
1925
+ * Type.isFloat(-Infinity); // false
1926
+ * ```
1927
+ *
1928
+ * @param {any} value Значение для проверки.
1929
+ * @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
1930
+ */
1931
+ static isFloat(value) {
1932
+ return is_float(value);
1933
+ }
1934
+
1935
+ /**
1936
+ * Проверяет, что значение является функцией, исключая классы.
1937
+ *
1938
+ * ### Параметры
1939
+ *
1940
+ * - `value` (any):
1941
+ * Проверяемое значение. Может быть любым типом данных.
1942
+ *
1943
+ * ### Описание
1944
+ *
1945
+ * Метод проверяет, является ли переданное значение функцией, исключая классы.
1946
+ * В JavaScript функции и классы оба являются типом `function`, но классы имеют особый синтаксис и поведение.
1947
+ * Метод `Type.isFunction` различает их, проверяя, не начинается ли строковое представление функции с `class`, что указывает на то, что это класс, а не обычная функция.
1948
+ * Если значение является функцией (но не классом), метод возвращает `true`.
1949
+ * Для всех остальных типов данных (включая классы, объекты, примитивы) метод возвращает `false`.
1950
+ *
1951
+ * ### Возвращаемое значение
1952
+ *
1953
+ * Возвращает `true`, если переданное значение является функцией (но не классом).
1954
+ * Возвращает `false`, если переданное значение является классом или любым другим типом данных.
1955
+ *
1956
+ * ### Примеры использования
1957
+ *
1958
+ * Пример 1: обычная функция
1959
+ *
1960
+ * ```js
1961
+ * function test() {}
1962
+ * Type.isFunction(test); // Возвращает: true
1963
+ * ```
1964
+ *
1965
+ * Пример 2: класс
1966
+ *
1967
+ * ```js
1968
+ * class MyClass {}
1969
+ * Type.isFunction(MyClass); // Возвращает: false
1970
+ * ```
1971
+ *
1972
+ * Пример 3: объект
1973
+ *
1974
+ * ```js
1975
+ * const obj = {};
1976
+ * Type.isFunction(obj); // Возвращает: false
1977
+ * ```
1978
+ *
1979
+ * Пример 4: примитив
1980
+ *
1981
+ * ```js
1982
+ * Type.isFunction(42); // Возвращает: false
1983
+ * Type.isFunction('hello'); // Возвращает: false
1984
+ * ```
1985
+ *
1986
+ * @param {any} value - Проверяемое значение.
1987
+ * @returns {boolean} Возвращает `true`, если значение является функцией, иначе `false`.
1988
+ */
1989
+ static isFunction(value) {
1990
+ return is_function(value);
1991
+ }
1992
+
1993
+ /**
1994
+ * Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
1995
+ *
1996
+ * ### Параметры
1997
+ *
1998
+ * - `value` (any)
1999
+ * Значение, которое необходимо проверить.
2000
+ *
2001
+ * ### Описание
2002
+ *
2003
+ * Метод `Type.isInfinity` проверяет, является ли переданное значение бесконечностью (Infinity или -Infinity).
2004
+ *
2005
+ * Он проверяет, равно ли значение `Number.POSITIVE_INFINITY` или `Number.NEGATIVE_INFINITY`.
2006
+ *
2007
+ * ### Возвращаемое значение
2008
+ *
2009
+ * Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
2010
+ *
2011
+ * ### Примеры использования
2012
+ *
2013
+ * #### Пример 1: Проверка значения Infinity
2014
+ *
2015
+ * ```js
2016
+ * Type.isInfinity(Infinity); // true
2017
+ * Type.isInfinity(-Infinity); // true
2018
+ * ```
2019
+ *
2020
+ * #### Пример 2: Проверка числовых значений
2021
+ *
2022
+ * ```js
2023
+ * Type.isInfinity(42); // false
2024
+ * Type.isInfinity(3.14); // false
2025
+ * Type.isInfinity(NaN); // false
2026
+ * ```
2027
+ *
2028
+ * #### Пример 3: Проверка значений других типов
2029
+ *
2030
+ * ```js
2031
+ * Type.isInfinity('Infinity'); // false (строка)
2032
+ * Type.isInfinity(true); // false (логическое значение)
2033
+ * Type.isInfinity(null); // false
2034
+ * Type.isInfinity(undefined); // false
2035
+ * Type.isInfinity({}); // false (объект)
2036
+ * Type.isInfinity([]); // false (массив)
2037
+ * ```
2038
+ *
2039
+ * @param {any} value Значение, которое необходимо проверить.
2040
+ * @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
2041
+ */
2042
+ static isInfinity(value) {
2043
+ return is_infinity(value);
2044
+ }
2045
+
2046
+ /**
2047
+ * Проверяет, является ли значение целым числом.
2048
+ *
2049
+ * ### Параметры
2050
+ *
2051
+ * - `value` (any)
2052
+ * Значение, которое нужно проверить.
2053
+ *
2054
+ * ### Описание
2055
+ *
2056
+ * Метод `Type.isInt` определяет, является ли переданное значение целым числом.
2057
+ *
2058
+ * Он выполняет следующие проверки:
2059
+ *
2060
+ * 1. **Тип значения**: Убеждается, что `value` имеет тип `number`.
2061
+ * 2. **Конечность числа**: Проверяет, что значение не является `Infinity` или `NaN` с помощью `Number.isFinite(value)`.
2062
+ * 3. **Целочисленность**: Убедится, что остаток от деления числа на 1 равен нулю (`value % 1 === 0`).
2063
+ *
2064
+ * Если значение соответствует всем этим условиям, оно считается целым числом.
2065
+ *
2066
+ * ### Возвращаемое значение
2067
+ *
2068
+ * Возвращает `true`, если значение является целым числом, иначе `false`.
2069
+ *
2070
+ * ### Примеры использования
2071
+ *
2072
+ * ```js
2073
+ * // Проверка целых чисел
2074
+ * Type.isInt(42); // true
2075
+ * Type.isInt(0); // true
2076
+ * Type.isInt(-123); // true
2077
+ *
2078
+ * // Проверка дробных чисел
2079
+ * Type.isInt(3.14); // false
2080
+ * Type.isInt(-0.001); // false
2081
+ *
2082
+ * // Некорректные типы данных
2083
+ * Type.isInt('42'); // false (строка)
2084
+ * Type.isInt(true); // false (логическое значение)
2085
+ * Type.isInt(null); // false (null)
2086
+ * Type.isInt(undefined);// false (undefined)
2087
+ *
2088
+ * // Бесконечные и некорректные числовые значения
2089
+ * Type.isInt(Infinity); // false (бесконечность)
2090
+ * Type.isInt(-Infinity);// false (отрицательная бесконечность)
2091
+ * Type.isInt(NaN); // false (не число)
2092
+ *
2093
+ * // Проверка типа bigint
2094
+ * Type.isInt(BigInt(123456)); // false
2095
+ * ```
2096
+ *
2097
+ * @param {any} value Значение для проверки.
2098
+ * @returns {boolean} Возвращает `true`, если значение является целым числом, иначе `false`.
2099
+ */
2100
+ static isInt(value) {
2101
+ return is_int(value);
2102
+ }
2103
+
2104
+ /**
2105
+ * Проверяет, является ли значение целым числом.
2106
+ *
2107
+ * ### Параметры
2108
+ *
2109
+ * - `value` (any)
2110
+ * Значение, которое необходимо проверить.
2111
+ *
2112
+ * ### Описание
2113
+ *
2114
+ * Метод `Type.isInteger` проверяет, является ли переданное значение целым числом.
2115
+ *
2116
+ * 1. Проверяется, что значение имеет тип `number`.
2117
+ * 2. Убеждается, что значение является конечным числом.
2118
+ * 3. Проверяется, что остаток от деления значения на 1 равен 0.
2119
+ *
2120
+ * Метод возвращает `false` для:
2121
+ *
2122
+ * - Чисел с плавающей точкой (например, `3.14`, `-0.99`).
2123
+ * - Специальных чисел (`NaN`, `Infinity`, `-Infinity`).
2124
+ * - Значений других типов, таких как строки, объекты или массивы.
2125
+ *
2126
+ * ### Возвращаемое значение
2127
+ *
2128
+ * Возвращает `true`, если значение является целым числом, и `false` в противном случае.
2129
+ *
2130
+ * ### Примеры использования
2131
+ *
2132
+ * #### Пример 1: Проверка целых чисел
2133
+ *
2134
+ * ```js
2135
+ * Type.isInteger(42); // true
2136
+ * Type.isInteger(-7); // true
2137
+ * Type.isInteger(0); // true
2138
+ * ```
2139
+ *
2140
+ * #### Пример 2: Проверка чисел с плавающей точкой
2141
+ *
2142
+ * ```js
2143
+ * Type.isInteger(3.14); // false
2144
+ * Type.isInteger(-0.5); // false
2145
+ * ```
2146
+ *
2147
+ * #### Пример 3: Проверка специальных чисел
2148
+ *
2149
+ * ```js
2150
+ * Type.isInteger(NaN); // false
2151
+ * Type.isInteger(Infinity); // false
2152
+ * Type.isInteger(-Infinity); // false
2153
+ * ```
2154
+ *
2155
+ * #### Пример 4: Проверка других типов данных
2156
+ *
2157
+ * ```js
2158
+ * Type.isInteger('42'); // false (строка)
2159
+ * Type.isInteger(true); // false (логическое значение)
2160
+ * Type.isInteger(null); // false
2161
+ * Type.isInteger(undefined); // false
2162
+ * Type.isInteger({}); // false (объект)
2163
+ * Type.isInteger([]); // false (массив)
2164
+ * ```
2165
+ *
2166
+ * #### Пример 5: Проверка типа bigint
2167
+ *
2168
+ * ```js
2169
+ * Type.isInteger(BigInt(123456)); // false
2170
+ * ```
2171
+ *
2172
+ * @param {any} value Значение для проверки.
2173
+ * @returns {boolean} Возвращает `true`, если значение является целым числом, иначе `false`.
2174
+ */
2175
+ static isInteger(value) {
2176
+ return is_int(value);
2177
+ }
2178
+
2179
+ /**
2180
+ * Проверяет, является ли значение списком.
2181
+ *
2182
+ * ### Параметры
2183
+ *
2184
+ * - `value` (any)
2185
+ * Значение, которое необходимо проверить.
2186
+ *
2187
+ * ### Описание
2188
+ *
2189
+ * Метод `Type.isList` проверяет, является ли переданное значение списком.
2190
+ *
2191
+ * Он использует метод `Array.isArray` для проверки значения.
2192
+ *
2193
+ * ### Возвращаемое значение
2194
+ *
2195
+ * Возвращает `true`, если значение является списком, и `false` в противном случае.
2196
+ *
2197
+ * ### Примеры использования
2198
+ *
2199
+ * #### Пример 1: Проверка массивов
2200
+ *
2201
+ * ```js
2202
+ * Type.isList([]); // true
2203
+ * Type.isList([1, 2, 3]); // true
2204
+ * ```
2205
+ *
2206
+ * #### Пример 2: Проверка значений других типов
2207
+ *
2208
+ * ```js
2209
+ * Type.isList({}); // false (ассоциативный массив)
2210
+ * Type.isList('string'); // false (строка)
2211
+ * Type.isList(42); // false (число)
2212
+ * Type.isList(null); // false
2213
+ * Type.isList(undefined); // false
2214
+ * ```
2215
+ *
2216
+ * @param {any} value Значение, которое необходимо проверить.
2217
+ * @returns {boolean} Возвращает `true`, если значение является списком, и `false` в противном случае.
2218
+ */
2219
+ static isList(value) {
2220
+ return is_list(value);
2221
+ }
2222
+
2223
+ /**
2224
+ * Проверяет, является ли значение NaN.
2225
+ *
2226
+ * ### Параметры
2227
+ *
2228
+ * - `value` (any)
2229
+ * Значение, которое необходимо проверить.
2230
+ *
2231
+ * ### Описание
2232
+ *
2233
+ * Метод `Type.isNaN` проверяет, является ли переданное значение NaN (Not-a-Number).
2234
+ *
2235
+ * Он использует метод `Number.isNaN` для проверки значения.
2236
+ *
2237
+ * ### Возвращаемое значение
2238
+ *
2239
+ * Возвращает `true`, если значение является NaN, и `false` в противном случае.
2240
+ *
2241
+ * ### Примеры использования
2242
+ *
2243
+ * #### Пример 1: Проверка значения NaN
2244
+ *
2245
+ * ```js
2246
+ * Type.isNaN(NaN); // true
2247
+ * ```
2248
+ *
2249
+ * #### Пример 2: Проверка числовых значений
2250
+ *
2251
+ * ```js
2252
+ * Type.isNaN(42); // false
2253
+ * Type.isNaN(3.14); // false
2254
+ * Type.isNaN(Infinity); // false
2255
+ * ```
2256
+ *
2257
+ * #### Пример 3: Проверка значений других типов
2258
+ *
2259
+ * ```js
2260
+ * Type.isNaN('42'); // false (строка)
2261
+ * Type.isNaN(true); // false (логическое значение)
2262
+ * Type.isNaN(null); // false
2263
+ * Type.isNaN(undefined); // false
2264
+ * Type.isNaN({}); // false (объект)
2265
+ * Type.isNaN([]); // false (массив)
2266
+ * ```
2267
+ *
2268
+ * @param {any} value Значение, которое необходимо проверить.
2269
+ * @returns {boolean} Возвращает `true`, если значение является NaN, и `false` в противном случае.
2270
+ */
2271
+ static isNaN(value) {
2272
+ return is_nan(value);
2273
+ }
2274
+
2275
+ /**
2276
+ * Проверяет, является ли значение `null`.
2277
+ *
2278
+ * ### Параметры
2279
+ *
2280
+ * - `value` (any)
2281
+ * Значение, которое необходимо проверить.
2282
+ *
2283
+ * ### Описание
2284
+ *
2285
+ * Метод `Type.isNull` проверяет, является ли переданное значение `null`.
2286
+ *
2287
+ * Он просто сравнивает значение с `null`.
2288
+ *
2289
+ * ### Возвращаемое значение
2290
+ *
2291
+ * Возвращает `true`, если значение является `null`, и `false` в противном случае.
2292
+ *
2293
+ * ### Примеры использования
2294
+ *
2295
+ * #### Пример 1: Проверка значения `null`
2296
+ *
2297
+ * ```js
2298
+ * Type.isNull(null); // true
2299
+ * ```
2300
+ *
2301
+ * #### Пример 2: Проверка значений других типов
2302
+ *
2303
+ * ```js
2304
+ * Type.isNull(undefined); // false
2305
+ * Type.isNull(0); // false
2306
+ * Type.isNull(''); // false
2307
+ * Type.isNull(false); // false
2308
+ * Type.isNull({}); // false
2309
+ * Type.isNull([]); // false
2310
+ * ```
2311
+ *
2312
+ * @param {any} value Значение, которое необходимо проверить.
2313
+ * @returns {boolean} Возвращает `true`, если значение является `null`, и `false` в противном случае.
2314
+ */
2315
+ static isNull(value) {
2316
+ return is_null(value);
2317
+ }
2318
+
2319
+ /**
2320
+ * Проверяет, является ли значение числом.
2321
+ *
2322
+ * ### Параметры
2323
+ *
2324
+ * - `value` (any)
2325
+ * Значение, которое необходимо проверить.
2326
+ *
2327
+ * ### Описание
2328
+ *
2329
+ * Метод `Type.isNumber` проверяет, является ли переданное значение числом.
2330
+ *
2331
+ * Он использует оператор `typeof` для проверки типа значения.
2332
+ *
2333
+ * Метод возвращает `false` для значений других типов, таких как строки, объекты или массивы.
2334
+ *
2335
+ * ### Возвращаемое значение
2336
+ *
2337
+ * Возвращает `true`, если значение является числом, и `false` в противном случае.
2338
+ *
2339
+ * ### Примеры использования
2340
+ *
2341
+ * #### Пример 1: Проверка числовых значений
2342
+ *
2343
+ * ```js
2344
+ * Type.isNumber(42); // true
2345
+ * Type.isNumber(3.14); // true
2346
+ * ```
2347
+ *
2348
+ * #### Пример 2: Проверка значений других типов
2349
+ *
2350
+ * ```js
2351
+ * Type.isNumber('42'); // false (строка)
2352
+ * Type.isNumber(true); // false (логическое значение)
2353
+ * Type.isNumber(null); // false
2354
+ * Type.isNumber(undefined); // false
2355
+ * Type.isNumber({}); // false (объект)
2356
+ * Type.isNumber([]); // false (массив)
2357
+ * ```
2358
+ *
2359
+ * #### Пример 3: Проверка специальных чисел
2360
+ *
2361
+ * ```js
2362
+ * Type.isNumber(NaN); // false
2363
+ * Type.isNumber(Infinity); // false
2364
+ * Type.isNumber(-Infinity); // false
2365
+ * ```
2366
+ *
2367
+ * @param {any} value Значение, которое необходимо проверить.
2368
+ * @returns {boolean} Возвращает `true`, если значение является числом, и `false` в противном случае.
2369
+ */
2370
+ static isNumber(value) {
2371
+ return is_number(value);
2372
+ }
2373
+
2374
+ /**
2375
+ * Проверяет, является ли значение числом или числовой строкой.
2376
+ *
2377
+ * ### Параметры
2378
+ *
2379
+ * - `value` (any)
2380
+ * Значение, которое необходимо проверить.
2381
+ *
2382
+ * ### Описание
2383
+ *
2384
+ * Метод `Type.isNumeric` проверяет, является ли переданное значение числом или строкой, которая может быть преобразована в число.
2385
+ *
2386
+ * Он использует функцию `is_numeric` для выполнения проверки.
2387
+ *
2388
+ * ### Возвращаемое значение
2389
+ *
2390
+ * Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
2391
+ *
2392
+ * ### Примеры использования
2393
+ *
2394
+ * #### Пример 1: Проверка числовых значений
2395
+ *
2396
+ * ```js
2397
+ * Type.isNumeric(42); // true
2398
+ * Type.isNumeric(3.14); // true
2399
+ * ```
2400
+ *
2401
+ * #### Пример 2: Проверка числовых строк
2402
+ *
2403
+ * ```js
2404
+ * Type.isNumeric('42'); // true
2405
+ * Type.isNumeric('3.14'); // true
2406
+ * ```
2407
+ *
2408
+ * #### Пример 3: Проверка значений других типов
2409
+ *
2410
+ * ```js
2411
+ * Type.isNumeric(true); // false (логическое значение)
2412
+ * Type.isNumeric(null); // false
2413
+ * Type.isNumeric(undefined); // false
2414
+ * Type.isNumeric({}); // false (объект)
2415
+ * Type.isNumeric([]); // false (массив)
2416
+ * Type.isNumeric('hello'); // false (строка)
2417
+ * ```
2418
+ *
2419
+ * @param {any} value Значение, которое необходимо проверить.
2420
+ * @returns {boolean} Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
2421
+ */
2422
+ static isNumeric(value) {
2423
+ return is_numeric(value);
2424
+ }
2425
+
2426
+ /**
2427
+ * Проверяет, является ли переданная переменная объектом.
2428
+ *
2429
+ * ### Параметры
2430
+ *
2431
+ * - `value` (any)
2432
+ * Проверяемая переменная.
2433
+ *
2434
+ * ### Описание
2435
+ *
2436
+ * Метод `Type.isObject` проверяет, является ли переданное значение объектом.
2437
+ *
2438
+ * Он использует оператор `typeof` для проверки типа значения и убеждается, что значение не является `null`.
2439
+ *
2440
+ * Метод возвращает `false` для значений других типов, таких как числа, строки, массивы или функции.
2441
+ *
2442
+ * ### Возвращаемое значение
2443
+ *
2444
+ * Возвращает `true`, если значение является объектом, и `false` в противном случае.
2445
+ *
2446
+ * ### Примеры использования
2447
+ *
2448
+ * #### Пример 1: Проверка объектов
2449
+ *
2450
+ * ```js
2451
+ * Type.isObject({}); // true
2452
+ * Type.isObject({ key: 'value' }); // true
2453
+ * ```
2454
+ *
2455
+ * #### Пример 2: Проверка значений других типов
2456
+ *
2457
+ * ```js
2458
+ * Type.isObject(42); // false (число)
2459
+ * Type.isObject('string'); // false (строка)
2460
+ * Type.isObject(null); // false
2461
+ * Type.isObject(undefined); // false
2462
+ * Type.isObject([]); // false (массив)
2463
+ * Type.isObject(() => {}); // false (функция)
2464
+ * ```
2465
+ *
2466
+ * @param {any} value Проверяемая переменная.
2467
+ * @returns {boolean} Возвращает `true`, если значение является объектом, иначе `false`.
2468
+ */
2469
+ static isObject(value) {
2470
+ return is_object(value);
2471
+ }
2472
+
2473
+ /**
2474
+ * Проверяет, является ли значение скалярным.
2475
+ *
2476
+ * ### Параметры
2477
+ *
2478
+ * - `value` (any)
2479
+ * Проверяемая переменная.
2480
+ *
2481
+ * ### Описание
2482
+ *
2483
+ * Скалярные переменные — это переменные, содержащие `int`, `float`, `string`, `bool` и `symbol`.
2484
+ * Типы `array`, `object`, `null`, `undefined` — не скалярные.
2485
+ *
2486
+ * ### Возвращаемое значение
2487
+ *
2488
+ * Возвращает `true`, если значение является скалярным, иначе `false`.
2489
+ *
2490
+ * ### Примеры использования
2491
+ *
2492
+ * ```js
2493
+ * // Пример 1: Проверка скалярных значений
2494
+ * Type.isScalar(true); // true
2495
+ * Type.isScalar(42); // true
2496
+ * Type.isScalar('hello'); // true
2497
+ * Type.isScalar(Symbol('symbol')); // true
2498
+ *
2499
+ * // Пример 2: Проверка не скалярных значений
2500
+ * Type.isScalar(null); // false
2501
+ * Type.isScalar(undefined); // false
2502
+ * Type.isScalar({}); // false (объект)
2503
+ * Type.isScalar([]); // false (массив)
2504
+ * Type.isScalar(() => {}); // false (функция)
2505
+ * ```
2506
+ *
2507
+ * @param {any} value Проверяемая переменная.
2508
+ * @returns {boolean} Возвращает `true`, если значение является скалярным, иначе `false`.
2509
+ */
2510
+ static isScalar(value) {
2511
+ return is_scalar(value);
2512
+ }
2513
+
2514
+ /**
2515
+ * Проверяет, является ли значение строкой.
2516
+ *
2517
+ * ### Параметры
2518
+ *
2519
+ * - `value` (any)
2520
+ * Значение, которое необходимо проверить.
2521
+ *
2522
+ * ### Описание
2523
+ *
2524
+ * Метод `Type.isString` проверяет, является ли переданное значение строкой.
2525
+ *
2526
+ * Он использует оператор `typeof` для проверки типа значения.
2527
+ *
2528
+ * Метод возвращает `false` для значений других типов, таких как числа, объекты или массивы.
2529
+ *
2530
+ * ### Возвращаемое значение
2531
+ *
2532
+ * Возвращает `true`, если значение является строкой, и `false` в противном случае.
2533
+ *
2534
+ * ### Примеры использования
2535
+ *
2536
+ * #### Пример 1: Проверка строковых значений
2537
+ *
2538
+ * ```js
2539
+ * Type.isString('hello'); // true
2540
+ * Type.isString(''); // true
2541
+ * ```
2542
+ *
2543
+ * #### Пример 2: Проверка значений других типов
2544
+ *
2545
+ * ```js
2546
+ * Type.isString(42); // false (число)
2547
+ * Type.isString(true); // false (логическое значение)
2548
+ * Type.isString(null); // false
2549
+ * Type.isString(undefined); // false
2550
+ * Type.isString({}); // false (объект)
2551
+ * Type.isString([]); // false (массив)
2552
+ * ```
2553
+ *
2554
+ * @param {any} value Значение, которое необходимо проверить.
2555
+ * @returns {boolean} Возвращает `true`, если значение является строкой, иначе `false`.
2556
+ */
2557
+ static isString(value) {
2558
+ return is_string(value);
2559
+ }
2560
+
2561
+ /**
2562
+ * Проверяет, является ли значение символом.
2563
+ *
2564
+ * ### Параметры
2565
+ *
2566
+ * - `value` (any)
2567
+ * Проверяемая переменная.
2568
+ *
2569
+ * ### Описание
2570
+ *
2571
+ * Метод `Type.isSymbol` предназначен для проверки, является ли переданное значение символом.
2572
+ *
2573
+ * Он проверяет:
2574
+ *
2575
+ * 1. Что значение имеет тип `symbol`.
2576
+ *
2577
+ * Метод возвращает `false` для всех значений, не принадлежащих типу `symbol`.
2578
+ *
2579
+ * ### Возвращаемое значение
2580
+ *
2581
+ * Возвращает `true`, если значение является символом, иначе `false`.
2582
+ *
2583
+ * ### Примеры использования
2584
+ *
2585
+ * ```js
2586
+ * // Пример 1: Проверка символов
2587
+ * Type.isSymbol(Symbol('symbol')); // true
2588
+ * Type.isSymbol(Symbol.iterator); // true
2589
+ *
2590
+ * // Пример 2: Проверка значений других типов
2591
+ * Type.isSymbol('hello'); // false (строка)
2592
+ * Type.isSymbol(42); // false (число)
2593
+ * Type.isSymbol(true); // false (логическое значение)
2594
+ * Type.isSymbol(null); // false
2595
+ * Type.isSymbol(undefined); // false
2596
+ * Type.isSymbol({}); // false (объект)
2597
+ * Type.isSymbol([]); // false (массив)
2598
+ * Type.isSymbol(() => {}); // false (функция)
2599
+ * ```
2600
+ *
2601
+ * @param {any} value Проверяемая переменная.
2602
+ * @returns {boolean} Возвращает `true`, если значение является символом, иначе `false`.
2603
+ */
2604
+ static isSymbol(value) {
2605
+ return is_symbol(value);
2606
+ }
2607
+
2608
+ /**
2609
+ * Проверяет, является ли значение `undefined`.
2610
+ *
2611
+ * ### Параметры
2612
+ *
2613
+ * - `value` (any)
2614
+ * Проверяемая переменная.
2615
+ *
2616
+ * ### Описание
2617
+ *
2618
+ * Метод `Type.isUndefined` проверяет, является ли переданное значение `undefined`.
2619
+ *
2620
+ * Он использует оператор `typeof` для проверки типа значения.
2621
+ *
2622
+ * Метод возвращает `false` для всех значений, не принадлежащих типу `undefined`.
2623
+ *
2624
+ * ### Возвращаемое значение
2625
+ *
2626
+ * Возвращает `true`, если значение является `undefined`, иначе `false`.
2627
+ *
2628
+ * ### Примеры использования
2629
+ *
2630
+ * ```js
2631
+ * // Пример 1: Проверка значения undefined
2632
+ * Type.isUndefined(undefined); // true
2633
+ *
2634
+ * // Пример 2: Проверка значений других типов
2635
+ * Type.isUndefined(null); // false
2636
+ * Type.isUndefined(42); // false (число)
2637
+ * Type.isUndefined('hello'); // false (строка)
2638
+ * Type.isUndefined(true); // false (логическое значение)
2639
+ * Type.isUndefined({}); // false (объект)
2640
+ * Type.isUndefined([]); // false (массив)
2641
+ * Type.isUndefined(() => {}); // false (функция)
2642
+ * ```
2643
+ *
2644
+ * @param {any} value Проверяемая переменная.
2645
+ * @returns {boolean} Возвращает `true`, если значение является `undefined`, иначе `false`.
2646
+ */
2647
+ static isUndefined(value) {
2648
+ return is_undefined(value);
2649
+ }
2650
+ }
2651
+
2652
+ Object.defineProperties(Type, {
2653
+ NULL: {
2654
+ value: TYPE_NULL,
2655
+ writable: false,
2656
+ configurable: false,
2657
+ enumerable: true,
2658
+ },
2659
+ NAN: {
2660
+ value: TYPE_NAN,
2661
+ writable: false,
2662
+ configurable: false,
2663
+ enumerable: true,
2664
+ },
2665
+ UNDEFINED: {
2666
+ value: TYPE_UNDEFINED,
2667
+ writable: false,
2668
+ configurable: false,
2669
+ enumerable: true,
2670
+ },
2671
+ INFINITY: {
2672
+ value: TYPE_INFINITY,
2673
+ writable: false,
2674
+ configurable: false,
2675
+ enumerable: true,
2676
+ },
2677
+ BOOLEAN: {
2678
+ value: TYPE_BOOLEAN,
2679
+ writable: false,
2680
+ configurable: false,
2681
+ enumerable: true,
2682
+ },
2683
+ INTEGER: {
2684
+ value: TYPE_INTEGER,
2685
+ writable: false,
2686
+ configurable: false,
2687
+ enumerable: true,
2688
+ },
2689
+ BIGINT: {
2690
+ value: TYPE_BIGINT,
2691
+ writable: false,
2692
+ configurable: false,
2693
+ enumerable: true,
2694
+ },
2695
+ FLOAT: {
2696
+ value: TYPE_FLOAT,
2697
+ writable: false,
2698
+ configurable: false,
2699
+ enumerable: true,
2700
+ },
2701
+ STRING: {
2702
+ value: TYPE_STRING,
2703
+ writable: false,
2704
+ configurable: false,
2705
+ enumerable: true,
2706
+ },
2707
+ SYMBOL: {
2708
+ value: TYPE_SYMBOL,
2709
+ writable: false,
2710
+ configurable: false,
2711
+ enumerable: true,
2712
+ },
2713
+ CLASS: {
2714
+ value: TYPE_CLASS,
2715
+ writable: false,
2716
+ configurable: false,
2717
+ enumerable: true,
2718
+ },
2719
+ FUNCTION: {
2720
+ value: TYPE_FUNCTION,
2721
+ writable: false,
2722
+ configurable: false,
2723
+ enumerable: true,
2724
+ },
2725
+ ARRAY: {
2726
+ value: TYPE_ARRAY,
2727
+ writable: false,
2728
+ configurable: false,
2729
+ enumerable: true,
2730
+ },
2731
+ OBJECT: {
2732
+ value: TYPE_OBJECT,
2733
+ writable: false,
2734
+ configurable: false,
2735
+ enumerable: true,
2736
+ },
2737
+ });
2738
+
2739
+ export default Type;