@rogolev/value 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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;