@rogolev/value 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +19 -1
  3. package/docs/classes/Value/constructor.md +48 -0
  4. package/docs/classes/Value/get.md +51 -0
  5. package/docs/classes/Value/getType.md +71 -0
  6. package/docs/classes/Value/isArray.md +67 -0
  7. package/docs/classes/Value/isAssoc.md +68 -0
  8. package/docs/classes/Value/isBigInt.md +52 -0
  9. package/docs/classes/Value/isBool.md +60 -0
  10. package/docs/classes/Value/isBoolean.md +60 -0
  11. package/docs/classes/Value/isClass.md +55 -0
  12. package/docs/classes/Value/isEmpty.md +84 -0
  13. package/docs/classes/Value/isFloat.md +52 -0
  14. package/docs/classes/Value/isFunction.md +60 -0
  15. package/docs/classes/Value/isInfinity.md +60 -0
  16. package/docs/classes/Value/isInt.md +52 -0
  17. package/docs/classes/Value/isInteger.md +52 -0
  18. package/docs/classes/Value/isList.md +59 -0
  19. package/docs/classes/Value/isNaN.md +79 -0
  20. package/docs/classes/Value/isNull.md +59 -0
  21. package/docs/classes/Value/isNumber.md +80 -0
  22. package/docs/classes/Value/isNumeric.md +79 -0
  23. package/docs/classes/Value/isObject.md +68 -0
  24. package/docs/classes/Value/isScalar.md +72 -0
  25. package/docs/classes/Value/isString.md +67 -0
  26. package/docs/classes/Value/isSymbol.md +75 -0
  27. package/docs/classes/Value/isUndefined.md +67 -0
  28. package/docs/classes/Value/print.md +164 -0
  29. package/docs/classes/Value/printType.md +158 -0
  30. package/docs/classes/Value/setType.md +79 -0
  31. package/docs/classes/Value/toArray.md +85 -0
  32. package/docs/classes/Value/toAssoc.md +85 -0
  33. package/docs/classes/Value/toBool.md +71 -0
  34. package/docs/classes/Value/toBoolean.md +71 -0
  35. package/docs/classes/Value/toFloat.md +72 -0
  36. package/docs/classes/Value/toInt.md +72 -0
  37. package/docs/classes/Value/toInteger.md +72 -0
  38. package/docs/classes/Value/toList.md +77 -0
  39. package/docs/classes/Value/toObject.md +78 -0
  40. package/docs/classes/Value/toPrint.md +115 -0
  41. package/docs/classes/Value/toPrintType.md +110 -0
  42. package/docs/classes/Value/toString.md +134 -0
  43. package/docs/classes/Value.md +113 -0
  44. package/docs/classes.md +2 -0
  45. package/docs/constants.md +47 -0
  46. package/docs/helpers/value.md +95 -0
  47. package/docs/helpers.md +2 -0
  48. package/index.mjs +3 -0
  49. package/package.json +2 -2
  50. package/src/classes/Convert.mjs +818 -819
  51. package/src/classes/Type.mjs +1284 -1285
  52. package/src/classes/Value.mjs +2846 -0
  53. package/src/constants.mjs +14 -0
  54. package/src/helpers/array.mjs +107 -107
  55. package/src/helpers/empty.mjs +70 -70
  56. package/src/helpers/gettype.mjs +149 -133
  57. package/src/helpers/is_array.mjs +128 -128
  58. package/src/helpers/is_assoc.mjs +51 -51
  59. package/src/helpers/is_bigint.mjs +47 -47
  60. package/src/helpers/is_bool.mjs +43 -43
  61. package/src/helpers/is_boolean.mjs +43 -43
  62. package/src/helpers/is_class.mjs +87 -87
  63. package/src/helpers/is_float.mjs +67 -67
  64. package/src/helpers/is_function.mjs +74 -74
  65. package/src/helpers/is_infinity.mjs +52 -52
  66. package/src/helpers/is_int.mjs +57 -57
  67. package/src/helpers/is_integer.mjs +74 -74
  68. package/src/helpers/is_list.mjs +43 -43
  69. package/src/helpers/is_nan.mjs +51 -51
  70. package/src/helpers/is_null.mjs +37 -37
  71. package/src/helpers/is_number.mjs +49 -49
  72. package/src/helpers/is_numeric.mjs +64 -64
  73. package/src/helpers/is_object.mjs +72 -72
  74. package/src/helpers/is_scalar.mjs +45 -45
  75. package/src/helpers/is_string.mjs +46 -46
  76. package/src/helpers/is_symbol.mjs +46 -46
  77. package/src/helpers/is_undefined.mjs +44 -44
  78. package/src/helpers/print.mjs +245 -245
  79. package/src/helpers/print_type.mjs +261 -261
  80. package/src/helpers/settype.mjs +101 -101
  81. package/src/helpers/to_array.mjs +118 -118
  82. package/src/helpers/to_assoc.mjs +98 -98
  83. package/src/helpers/to_bool.mjs +68 -68
  84. package/src/helpers/to_boolean.mjs +64 -64
  85. package/src/helpers/to_float.mjs +72 -72
  86. package/src/helpers/to_int.mjs +93 -93
  87. package/src/helpers/to_integer.mjs +81 -81
  88. package/src/helpers/to_list.mjs +56 -56
  89. package/src/helpers/to_object.mjs +94 -94
  90. package/src/helpers/to_string.mjs +157 -157
  91. package/src/helpers/value.mjs +92 -0
  92. package/tests/classes/Convert.test.mjs +398 -399
  93. package/tests/classes/Type.test.mjs +1262 -1263
  94. package/tests/classes/Value.test.mjs +423 -0
  95. package/tests/constants.test.mjs +75 -0
  96. package/tests/helpers/array.test.mjs +58 -58
  97. package/tests/helpers/empty.test.mjs +22 -22
  98. package/tests/helpers/gettype.test.mjs +74 -74
  99. package/tests/helpers/is_array.test.mjs +404 -404
  100. package/tests/helpers/is_assoc.test.mjs +42 -42
  101. package/tests/helpers/is_bigint.test.mjs +51 -51
  102. package/tests/helpers/is_bool.test.mjs +43 -43
  103. package/tests/helpers/is_boolean.test.mjs +43 -43
  104. package/tests/helpers/is_class.test.mjs +84 -84
  105. package/tests/helpers/is_float.test.mjs +87 -87
  106. package/tests/helpers/is_function.test.mjs +83 -83
  107. package/tests/helpers/is_infinity.test.mjs +46 -46
  108. package/tests/helpers/is_int.test.mjs +45 -45
  109. package/tests/helpers/is_integer.test.mjs +64 -64
  110. package/tests/helpers/is_list.test.mjs +42 -42
  111. package/tests/helpers/is_nan.test.mjs +43 -43
  112. package/tests/helpers/is_null.test.mjs +17 -17
  113. package/tests/helpers/is_number.test.mjs +25 -25
  114. package/tests/helpers/is_numeric.test.mjs +30 -30
  115. package/tests/helpers/is_object.test.mjs +52 -52
  116. package/tests/helpers/is_scalar.test.mjs +21 -21
  117. package/tests/helpers/is_string.test.mjs +20 -20
  118. package/tests/helpers/is_symbol.test.mjs +20 -20
  119. package/tests/helpers/is_undefined.test.mjs +18 -18
  120. package/tests/helpers/print.test.mjs +62 -62
  121. package/tests/helpers/print_type.test.mjs +62 -62
  122. package/tests/helpers/settype.test.mjs +34 -34
  123. package/tests/helpers/to_array.test.mjs +38 -38
  124. package/tests/helpers/to_assoc.test.mjs +33 -33
  125. package/tests/helpers/to_bool.test.mjs +51 -51
  126. package/tests/helpers/to_boolean.test.mjs +51 -51
  127. package/tests/helpers/to_float.test.mjs +26 -26
  128. package/tests/helpers/to_int.test.mjs +48 -48
  129. package/tests/helpers/to_integer.test.mjs +48 -48
  130. package/tests/helpers/to_list.test.mjs +32 -32
  131. package/tests/helpers/to_object.test.mjs +36 -36
  132. package/tests/helpers/to_string.test.mjs +71 -71
  133. package/tests/helpers/value.test.mjs +68 -0
@@ -1,1285 +1,1284 @@
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;
1285
-
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;