@rogolev/value 0.0.3 → 0.0.5

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