@rogolev/value 0.0.1
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.
- package/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли переданное значение массивом или ассоциативным массивом (объектом с ключами и значениями).
|
|
3
|
+
*
|
|
4
|
+
* ### Описание
|
|
5
|
+
*
|
|
6
|
+
* В JavaScript массивы и объекты имеют разные структуры и предназначения:
|
|
7
|
+
*
|
|
8
|
+
* - Массивы (Array) являются упорядоченными коллекциями элементов, которые могут быть индексированы.
|
|
9
|
+
* - Объекты (Object) содержат пары "ключ-значение", которые могут быть неупорядоченными.
|
|
10
|
+
*
|
|
11
|
+
* Эта функция проверяет, является ли переданное значение обычным массивом (например, `[1, 2, 3]`),
|
|
12
|
+
* либо ассоциативным массивом (объектом с парами "ключ-значение", например, `{foo: 'bar'}`).
|
|
13
|
+
*
|
|
14
|
+
* ### Алгоритм работы функции
|
|
15
|
+
*
|
|
16
|
+
* 1. Сначала проверяется, является ли переданное значение обычным массивом с помощью встроенного метода `Array.isArray(value)`. Если это массив, функция сразу возвращает `true`.
|
|
17
|
+
*
|
|
18
|
+
* 2. Если переменная не является массивом, то выполняются дополнительные проверки:
|
|
19
|
+
*
|
|
20
|
+
* - Проверяется, что значение не равно `null` (так как `null` в JavaScript также является объектом, но не является ни массивом, ни объектом с парами "ключ-значение").
|
|
21
|
+
* - Проверяется, что значение является объектом JavaScript (с помощью `typeof value === 'object'`).
|
|
22
|
+
* - Проверяется, что прототип объекта совпадает с `Object.prototype` (это объект, от которого наследуются все объекты в JavaScript) или является `null` (это означает, что объект был создан с помощью `Object.create(null)` и не имеет прототипа).
|
|
23
|
+
* - Исключаются массивоподобные объекты (например, `arguments`, `NodeList`), путем проверки, что свойство `length` не является собственным свойством объекта.
|
|
24
|
+
* - Дополнительно проверяется, что объект является простым (его конструктор равен `Object`), а также исключаются встроенные объекты (`Math`, `JSON`, `Reflect`, `Intl`), для которых функция возвращает `true`.
|
|
25
|
+
*
|
|
26
|
+
* ### Параметры
|
|
27
|
+
*
|
|
28
|
+
* - `value` (any)
|
|
29
|
+
* Проверяемая переменная.
|
|
30
|
+
*
|
|
31
|
+
* ### Возвращаемое значение
|
|
32
|
+
*
|
|
33
|
+
* Возвращает `true`, если переменная является обычным массивом (`Array`), ассоциативным массивом (объектом с парами "ключ-значение"), ассоциативным массивом, созданным с помощью `Object.create(null)`. В остальных случаях функция возвращает `false`.
|
|
34
|
+
*
|
|
35
|
+
* ### Примеры использования
|
|
36
|
+
*
|
|
37
|
+
* 1. Простые массивы:
|
|
38
|
+
*
|
|
39
|
+
* ```js
|
|
40
|
+
* is_array([1, 2, 3]); // true
|
|
41
|
+
* is_array([]); // true
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* 2. Ассоциативные массивы (объекты с ключами и значениями):
|
|
45
|
+
*
|
|
46
|
+
* ```js
|
|
47
|
+
* is_array({ foo: 'bar', baz: 42 }); // true
|
|
48
|
+
* is_array({ '0': 'a', '1': 'b' }); // true
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* 3. Объекты, созданные без прототипа:
|
|
52
|
+
*
|
|
53
|
+
* ```js
|
|
54
|
+
* const noProtoObject = Object.create(null);
|
|
55
|
+
* noProtoObject.foo = 'bar';
|
|
56
|
+
* is_array(noProtoObject); // true
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* 4. Примитивы и невалидные значения:
|
|
60
|
+
*
|
|
61
|
+
* ```js
|
|
62
|
+
* is_array(null); // false
|
|
63
|
+
* is_array(undefined); // false
|
|
64
|
+
* is_array(42); // false
|
|
65
|
+
* is_array('hello'); // false
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* 5. Специальные объекты:
|
|
69
|
+
*
|
|
70
|
+
* ```js
|
|
71
|
+
* is_array(new Map()); // false
|
|
72
|
+
* is_array(new Set()); // false
|
|
73
|
+
* is_array(() => {}); // false
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* 6. Классы и их экземпляры:
|
|
77
|
+
*
|
|
78
|
+
* ```js
|
|
79
|
+
* class MyClass {}
|
|
80
|
+
* const instance = new MyClass();
|
|
81
|
+
* is_array(instance); // false
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @param {any} value Проверяемая переменная.
|
|
85
|
+
* @returns {boolean} Возвращает `true`, если значение является массивом или ассоциативным массивом, иначе `false`.
|
|
86
|
+
*/
|
|
87
|
+
export default function is_array(value) {
|
|
88
|
+
// Для массивов (Array) возвращаем `true` по умолчанию.
|
|
89
|
+
if (Array.isArray(value)) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Далее работаем только с объектами.
|
|
94
|
+
if (!value || typeof value !== 'object') {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Если у переданного объекта отсутствует прототип, то это означает,
|
|
99
|
+
// что объект является контейнером пар ключ-значение без встроенных методов,
|
|
100
|
+
// наследуемых от прототипа Object.prototype.
|
|
101
|
+
// Такой контейнер можно создать с помощью конструкции `Object.create(null)`
|
|
102
|
+
// или с помощью функции `array({})`.
|
|
103
|
+
if (Object.getPrototypeOf(value) === null) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Исключаем встроенные объекты Math, JSON, Reflect, Intl, для которых
|
|
108
|
+
// функция возвращает `true`.
|
|
109
|
+
if ([Math, JSON, Reflect, Intl].includes(value)) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Если у объекта присутствует свойство `length`, то это означает, что
|
|
114
|
+
// передан массивоподобный объект, например `arguments`.
|
|
115
|
+
// С точки зрения данной функции, данные объекты считать
|
|
116
|
+
// ассоциативными массивами нельзя.
|
|
117
|
+
if (Object.hasOwn(value, 'length')) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Если прототип переданного объекта - `Object.prototype`, то передан
|
|
122
|
+
// обычный объект.
|
|
123
|
+
if (Object.getPrototypeOf(value) === Object.prototype) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import is_array from './is_array.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, является ли значение ассоциативным массивом.
|
|
5
|
+
*
|
|
6
|
+
* ### Параметры
|
|
7
|
+
*
|
|
8
|
+
* - `value` (any)
|
|
9
|
+
* Значение, которое необходимо проверить.
|
|
10
|
+
*
|
|
11
|
+
* ### Описание
|
|
12
|
+
*
|
|
13
|
+
* Функция `is_assoc` проверяет, является ли переданное значение ассоциативным массивом.
|
|
14
|
+
*
|
|
15
|
+
* Она использует метод `is_array` для проверки значения и убеждается, что значение не является обычным массивом.
|
|
16
|
+
*
|
|
17
|
+
* ### Возвращаемое значение
|
|
18
|
+
*
|
|
19
|
+
* Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
|
|
20
|
+
*
|
|
21
|
+
* ### Примеры использования
|
|
22
|
+
*
|
|
23
|
+
* #### Пример 1: Проверка ассоциативных массивов
|
|
24
|
+
*
|
|
25
|
+
* ```js
|
|
26
|
+
* is_assoc({ foo: 'bar' }); // true
|
|
27
|
+
* is_assoc({}); // true
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* #### Пример 2: Проверка обычных массивов
|
|
31
|
+
*
|
|
32
|
+
* ```js
|
|
33
|
+
* is_assoc([]); // false
|
|
34
|
+
* is_assoc([1, 2, 3]); // false
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* #### Пример 3: Проверка значений других типов
|
|
38
|
+
*
|
|
39
|
+
* ```js
|
|
40
|
+
* is_assoc('string'); // false (строка)
|
|
41
|
+
* is_assoc(42); // false (число)
|
|
42
|
+
* is_assoc(null); // false
|
|
43
|
+
* is_assoc(undefined); // false
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @param {any} value Значение, которое необходимо проверить.
|
|
47
|
+
* @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
|
|
48
|
+
*/
|
|
49
|
+
export default function is_assoc(value) {
|
|
50
|
+
return is_array(value) && !Array.isArray(value);
|
|
51
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение типом `bigint`.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение, которое необходимо проверить.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_bigint` проверяет, является ли переданное значение типом `bigint`.
|
|
12
|
+
*
|
|
13
|
+
* 1. Проверяется, что значение имеет тип `bigint`.
|
|
14
|
+
*
|
|
15
|
+
* Функция возвращает `false` для значений других типов, таких как числа, строки, объекты или массивы.
|
|
16
|
+
*
|
|
17
|
+
* ### Возвращаемое значение
|
|
18
|
+
*
|
|
19
|
+
* Возвращает `true`, если значение является типом `bigint`, и `false` в противном случае.
|
|
20
|
+
*
|
|
21
|
+
* ### Примеры использования
|
|
22
|
+
*
|
|
23
|
+
* #### Пример 1: Проверка значений типа bigint
|
|
24
|
+
*
|
|
25
|
+
* ```js
|
|
26
|
+
* is_bigint(BigInt(123456)); // true
|
|
27
|
+
* is_bigint(BigInt(-123456)); // true
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* #### Пример 2: Проверка значений других типов
|
|
31
|
+
*
|
|
32
|
+
* ```js
|
|
33
|
+
* is_bigint(42); // false (число)
|
|
34
|
+
* is_bigint('42'); // false (строка)
|
|
35
|
+
* is_bigint(true); // false (логическое значение)
|
|
36
|
+
* is_bigint(null); // false
|
|
37
|
+
* is_bigint(undefined); // false
|
|
38
|
+
* is_bigint({}); // false (объект)
|
|
39
|
+
* is_bigint([]); // false (массив)
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @param {any} value Значение, которое необходимо проверить.
|
|
43
|
+
* @returns {boolean} Возвращает `true`, если значение является типом bigint, и `false` в противном случае.
|
|
44
|
+
*/
|
|
45
|
+
export default function is_bigint(value) {
|
|
46
|
+
return typeof value === 'bigint';
|
|
47
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли переданное значение логическим типом (`boolean`).
|
|
3
|
+
*
|
|
4
|
+
* ### Описание
|
|
5
|
+
*
|
|
6
|
+
* В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
|
|
7
|
+
* Функция проверяет тип переданного значения с использованием оператора `typeof`.
|
|
8
|
+
* Если значение является примитивом типа `boolean`, функция возвращает `true`.
|
|
9
|
+
* Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) функция вернёт `false`.
|
|
10
|
+
*
|
|
11
|
+
* #### Примечание
|
|
12
|
+
*
|
|
13
|
+
* - Функция возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
|
|
14
|
+
* - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
|
|
15
|
+
*
|
|
16
|
+
* ### Параметры
|
|
17
|
+
*
|
|
18
|
+
* - `value` (any):
|
|
19
|
+
* Проверяемая переменная.
|
|
20
|
+
*
|
|
21
|
+
* ### Возвращаемое значение
|
|
22
|
+
*
|
|
23
|
+
* Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
|
|
24
|
+
*
|
|
25
|
+
* ### Примеры использования
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* is_bool(true); // Возвращает: true
|
|
29
|
+
* is_bool(false); // Возвращает: true
|
|
30
|
+
* is_bool(0); // Возвращает: false
|
|
31
|
+
* is_bool('true'); // Возвращает: false
|
|
32
|
+
* is_bool(null); // Возвращает: false
|
|
33
|
+
* is_bool([]); // Возвращает: false
|
|
34
|
+
* is_bool({}); // Возвращает: false
|
|
35
|
+
* is_bool(new Boolean(true)); // Возвращает: false
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param {any} value Проверяемая переменная.
|
|
39
|
+
* @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
|
|
40
|
+
*/
|
|
41
|
+
export default function is_bool(value) {
|
|
42
|
+
return typeof value === 'boolean';
|
|
43
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли переданное значение логическим типом (`boolean`).
|
|
3
|
+
*
|
|
4
|
+
* ### Описание
|
|
5
|
+
*
|
|
6
|
+
* В JavaScript логическое значение может быть только двумя состояниями: `true` или `false`.
|
|
7
|
+
* Функция проверяет тип переданного значения с использованием оператора `typeof`.
|
|
8
|
+
* Если значение является примитивом типа `boolean`, функция возвращает `true`.
|
|
9
|
+
* Для всех других типов (включая объекты, строки, числа, `null`, `undefined` и другие) функция вернёт `false`.
|
|
10
|
+
*
|
|
11
|
+
* #### Примечание
|
|
12
|
+
*
|
|
13
|
+
* - Функция возвращает `false` для объектов типа `Boolean`, созданных с помощью конструктора `new Boolean()`.
|
|
14
|
+
* - Возвращает `false` для массивов, объектов и других типов данных, отличных от `boolean`.
|
|
15
|
+
*
|
|
16
|
+
* ### Параметры
|
|
17
|
+
*
|
|
18
|
+
* - `value` (any):
|
|
19
|
+
* Проверяемая переменная.
|
|
20
|
+
*
|
|
21
|
+
* ### Возвращаемое значение
|
|
22
|
+
*
|
|
23
|
+
* Возвращает `true`, если значение `value` является логическим (`boolean`), иначе `false`.
|
|
24
|
+
*
|
|
25
|
+
* ### Примеры использования
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* is_boolean(true); // Возвращает: true
|
|
29
|
+
* is_boolean(false); // Возвращает: true
|
|
30
|
+
* is_boolean(0); // Возвращает: false
|
|
31
|
+
* is_boolean('true'); // Возвращает: false
|
|
32
|
+
* is_boolean(null); // Возвращает: false
|
|
33
|
+
* is_boolean([]); // Возвращает: false
|
|
34
|
+
* is_boolean({}); // Возвращает: false
|
|
35
|
+
* is_boolean(new Boolean(true)); // Возвращает: false
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param {any} value Проверяемая переменная.
|
|
39
|
+
* @returns {boolean} Возвращает `true`, если значение является логическим, иначе `false`.
|
|
40
|
+
*/
|
|
41
|
+
export default function is_boolean(value) {
|
|
42
|
+
return typeof value === 'boolean';
|
|
43
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли переданная переменная классом.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Проверяемая переменная.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* В JavaScript классы являются функциями, но с уникальным поведением.
|
|
12
|
+
*
|
|
13
|
+
* Для определения класса функция проверяет:
|
|
14
|
+
*
|
|
15
|
+
* 1. Что переданная переменная является функцией.
|
|
16
|
+
* 2. Что строковое представление функции начинается с `class `.
|
|
17
|
+
*
|
|
18
|
+
* #### Примечание
|
|
19
|
+
*
|
|
20
|
+
* Конструкторы функций, созданные с помощью `function`, не будут распознаны как классы.
|
|
21
|
+
*
|
|
22
|
+
* Для примера:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* function Foo() {}
|
|
26
|
+
* is_class(Foo); // Возвращает: false
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* В отличие от классов, которые выглядят так:
|
|
30
|
+
*
|
|
31
|
+
* ```js
|
|
32
|
+
* class MyClass {}
|
|
33
|
+
* is_class(MyClass); // Возвращает: true
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* ### Возвращаемое значение
|
|
37
|
+
*
|
|
38
|
+
* Возвращает `true`, если значение является классом, иначе `false`.
|
|
39
|
+
*
|
|
40
|
+
* ### Примеры использования
|
|
41
|
+
*
|
|
42
|
+
* 1. Классы:
|
|
43
|
+
*
|
|
44
|
+
* ```js
|
|
45
|
+
* class MyClass {}
|
|
46
|
+
* is_class(MyClass); // true
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* 2. Функции-конструкторы:
|
|
50
|
+
*
|
|
51
|
+
* ```js
|
|
52
|
+
* function MyFunction() {}
|
|
53
|
+
* is_class(MyFunction); // false
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* 3. Объекты и примитивы:
|
|
57
|
+
*
|
|
58
|
+
* ```js
|
|
59
|
+
* is_class({}); // false
|
|
60
|
+
* is_class([]); // false
|
|
61
|
+
* is_class(null); // false
|
|
62
|
+
* is_class(42); // false
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @param {any} value Проверяемая переменная.
|
|
66
|
+
* @returns {boolean} Возвращает `true`, если значение является классом, иначе `false`.
|
|
67
|
+
*/
|
|
68
|
+
export default function is_class(value) {
|
|
69
|
+
// Проверяем, является ли значение функцией
|
|
70
|
+
if (typeof value !== 'function') {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
75
|
+
if (typeof value.toString === 'function') {
|
|
76
|
+
return /^class\s/.test(value.toString());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
80
|
+
if (!value.prototype) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Строковое представление может быть изменено в разных средах выполнения
|
|
85
|
+
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
86
|
+
return !Object.getOwnPropertyDescriptor(value, 'prototype')?.writable;
|
|
87
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение числом с плавающей точкой.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение для проверки.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_float` проверяет, является ли переданное значение числом с дробной частью, которое отличается от целого числа.
|
|
12
|
+
*
|
|
13
|
+
* Она работает следующим образом:
|
|
14
|
+
*
|
|
15
|
+
* 1. Проверяет, что значение имеет тип `number`.
|
|
16
|
+
* 2. Исключает значения `NaN`, которые также относятся к типу `number`, но не считаются числовыми значениями.
|
|
17
|
+
* 3. Проверяет, что у числа есть дробная часть, проверяя остаток от деления на `1` (`value % 1 !== 0`).
|
|
18
|
+
*
|
|
19
|
+
* Значения, которые не являются числами или числа без дробной части, не считаются числами с плавающей точкой.
|
|
20
|
+
*
|
|
21
|
+
* ### Возвращаемое значение
|
|
22
|
+
*
|
|
23
|
+
* Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
24
|
+
*
|
|
25
|
+
* ### Примеры использования
|
|
26
|
+
*
|
|
27
|
+
* #### Числа с плавающей точкой
|
|
28
|
+
*
|
|
29
|
+
* ```js
|
|
30
|
+
* is_float(3.14); // true
|
|
31
|
+
* is_float(-0.5); // true
|
|
32
|
+
* is_float(0.1 + 0.2); // true
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* #### Целые числа
|
|
36
|
+
*
|
|
37
|
+
* ```js
|
|
38
|
+
* is_float(0); // false
|
|
39
|
+
* is_float(42); // false
|
|
40
|
+
* is_float(-100); // false
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* #### Нечисловые значения
|
|
44
|
+
*
|
|
45
|
+
* ```js
|
|
46
|
+
* is_float('3.14'); // false
|
|
47
|
+
* is_float(NaN); // false
|
|
48
|
+
* is_float(null); // false
|
|
49
|
+
* is_float(undefined); // false
|
|
50
|
+
* is_float(true); // false
|
|
51
|
+
* is_float({}); // false
|
|
52
|
+
* is_float([]); // false
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* #### Специальные значения
|
|
56
|
+
*
|
|
57
|
+
* ```js
|
|
58
|
+
* is_float(Infinity); // false
|
|
59
|
+
* is_float(-Infinity); // false
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @param {any} value Значение для проверки.
|
|
63
|
+
* @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, иначе `false`.
|
|
64
|
+
*/
|
|
65
|
+
export default function is_float(value) {
|
|
66
|
+
return typeof value === 'number' && Number.isFinite(value) && value % 1 !== 0;
|
|
67
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, что значение является функцией, исключая классы.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any):
|
|
7
|
+
* Проверяемое значение. Может быть любым типом данных.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция проверяет, является ли переданное значение функцией, исключая классы.
|
|
12
|
+
* В JavaScript функции и классы оба являются типом `function`, но классы имеют особый синтаксис и поведение.
|
|
13
|
+
* Функция `is_function` различает их, проверяя, не начинается ли строковое представление функции с `class`, что указывает на то, что это класс, а не обычная функция.
|
|
14
|
+
* Если значение является функцией (но не классом), функция возвращает `true`.
|
|
15
|
+
* Для всех остальных типов данных (включая классы, объекты, примитивы) функция возвращает `false`.
|
|
16
|
+
*
|
|
17
|
+
* ### Возвращаемое значение
|
|
18
|
+
*
|
|
19
|
+
* Возвращает `true`, если переданное значение является функцией (но не классом).
|
|
20
|
+
* Возвращает `false`, если переданное значение является классом или любым другим типом данных.
|
|
21
|
+
*
|
|
22
|
+
* ### Примеры использования
|
|
23
|
+
*
|
|
24
|
+
* Пример 1: обычная функция
|
|
25
|
+
*
|
|
26
|
+
* ```js
|
|
27
|
+
* function test() {}
|
|
28
|
+
* is_function(test); // Возвращает: true
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* Пример 2: класс
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* class MyClass {}
|
|
35
|
+
* is_function(MyClass); // Возвращает: false
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Пример 3: объект
|
|
39
|
+
*
|
|
40
|
+
* ```js
|
|
41
|
+
* const obj = {};
|
|
42
|
+
* is_function(obj); // Возвращает: false
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Пример 4: примитив
|
|
46
|
+
*
|
|
47
|
+
* ```js
|
|
48
|
+
* is_function(42); // Возвращает: false
|
|
49
|
+
* is_function('hello'); // Возвращает: false
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @param {any} value - Проверяемое значение.
|
|
53
|
+
* @returns {boolean} Возвращает `true`, если значение является функцией, иначе `false`.
|
|
54
|
+
*/
|
|
55
|
+
export default function is_function(value) {
|
|
56
|
+
// Проверяем, является ли значение функцией
|
|
57
|
+
if (typeof value !== 'function') {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Проверяем, не является ли значение классом, используя строковое представление функции
|
|
62
|
+
if (typeof value.toString === 'function') {
|
|
63
|
+
return !/^class\s/.test(value.toString());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Если у функции нет прототипа, значит это стрелочная функция или метод
|
|
67
|
+
if (!value.prototype) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Строковое представление может быть изменено в разных средах выполнения
|
|
72
|
+
// или при минификации кода, поэтому проводим дополнительную проверку.
|
|
73
|
+
return Boolean(Object.getOwnPropertyDescriptor(value, 'prototype')?.writable);
|
|
74
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение бесконечностью (Infinity или -Infinity).
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение, которое необходимо проверить.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_infinity` проверяет, является ли переданное значение бесконечностью (Infinity или -Infinity).
|
|
12
|
+
*
|
|
13
|
+
* Она проверяет, равно ли значение `Number.POSITIVE_INFINITY` или `Number.NEGATIVE_INFINITY`.
|
|
14
|
+
*
|
|
15
|
+
* ### Возвращаемое значение
|
|
16
|
+
*
|
|
17
|
+
* Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
18
|
+
*
|
|
19
|
+
* ### Примеры использования
|
|
20
|
+
*
|
|
21
|
+
* #### Пример 1: Проверка значения Infinity
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* is_infinity(Infinity); // true
|
|
25
|
+
* is_infinity(-Infinity); // true
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* #### Пример 2: Проверка числовых значений
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* is_infinity(42); // false
|
|
32
|
+
* is_infinity(3.14); // false
|
|
33
|
+
* is_infinity(NaN); // false
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* #### Пример 3: Проверка значений других типов
|
|
37
|
+
*
|
|
38
|
+
* ```js
|
|
39
|
+
* is_infinity('Infinity'); // false (строка)
|
|
40
|
+
* is_infinity(true); // false (логическое значение)
|
|
41
|
+
* is_infinity(null); // false
|
|
42
|
+
* is_infinity(undefined); // false
|
|
43
|
+
* is_infinity({}); // false (объект)
|
|
44
|
+
* is_infinity([]); // false (массив)
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @param {any} value Значение, которое необходимо проверить.
|
|
48
|
+
* @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
49
|
+
*/
|
|
50
|
+
export default function is_infinity(value) {
|
|
51
|
+
return value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;
|
|
52
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Проверяет, является ли значение целым числом.
|
|
3
|
+
*
|
|
4
|
+
* ### Параметры
|
|
5
|
+
*
|
|
6
|
+
* - `value` (any)
|
|
7
|
+
* Значение, которое нужно проверить.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `is_int` определяет, является ли переданное значение целым числом.
|
|
12
|
+
*
|
|
13
|
+
* Она выполняет следующие проверки:
|
|
14
|
+
*
|
|
15
|
+
* 1. **Тип значения**: Убеждается, что `value` имеет тип `number`.
|
|
16
|
+
* 2. **Конечность числа**: Проверяет, что значение не является `Infinity` или `NaN` с помощью `Number.isFinite(value)`.
|
|
17
|
+
* 3. **Целочисленность**: Убедится, что остаток от деления числа на 1 равен нулю (`value % 1 === 0`).
|
|
18
|
+
*
|
|
19
|
+
* Если значение соответствует всем этим условиям, оно считается целым числом.
|
|
20
|
+
*
|
|
21
|
+
* ### Возвращаемое значение
|
|
22
|
+
*
|
|
23
|
+
* Возвращает `true`, если значение является целым числом, иначе `false`.
|
|
24
|
+
*
|
|
25
|
+
* ### Примеры использования
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* // Проверка целых чисел
|
|
29
|
+
* is_int(42); // true
|
|
30
|
+
* is_int(0); // true
|
|
31
|
+
* is_int(-123); // true
|
|
32
|
+
*
|
|
33
|
+
* // Проверка дробных чисел
|
|
34
|
+
* is_int(3.14); // false
|
|
35
|
+
* is_int(-0.001); // false
|
|
36
|
+
*
|
|
37
|
+
* // Некорректные типы данных
|
|
38
|
+
* is_int('42'); // false (строка)
|
|
39
|
+
* is_int(true); // false (логическое значение)
|
|
40
|
+
* is_int(null); // false (null)
|
|
41
|
+
* is_int(undefined);// false (undefined)
|
|
42
|
+
*
|
|
43
|
+
* // Бесконечные и некорректные числовые значения
|
|
44
|
+
* is_int(Infinity); // false (бесконечность)
|
|
45
|
+
* is_int(-Infinity);// false (отрицательная бесконечность)
|
|
46
|
+
* is_int(NaN); // false (не число)
|
|
47
|
+
*
|
|
48
|
+
* // Проверка типа bigint
|
|
49
|
+
* is_int(BigInt(123456)); // false
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @param {any} value Значение для проверки.
|
|
53
|
+
* @returns {boolean} Возвращает `true`, если значение является целым числом, иначе `false`.
|
|
54
|
+
*/
|
|
55
|
+
export default function is_int(value) {
|
|
56
|
+
return typeof value === 'number' && Number.isFinite(value) && value % 1 === 0;
|
|
57
|
+
}
|