ts-data-forge 3.2.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -21
- package/dist/array/impl/array-utils-creation.d.mts +116 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-creation.mjs +110 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -0
- package/dist/array/impl/array-utils-element-access.d.mts +61 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
- package/dist/array/impl/array-utils-element-access.mjs +66 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
- package/dist/array/impl/array-utils-iterators.d.mts +59 -0
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
- package/dist/array/impl/array-utils-iterators.mjs +104 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
- package/dist/array/impl/array-utils-modification.d.mts +154 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
- package/dist/array/impl/array-utils-modification.mjs +139 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +179 -0
- package/dist/array/impl/array-utils-search.d.mts.map +1 -0
- package/dist/array/impl/array-utils-search.mjs +153 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -0
- package/dist/array/impl/array-utils-set-op.d.mts +100 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
- package/dist/array/impl/array-utils-set-op.mjs +137 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
- package/dist/array/impl/array-utils-size.d.mts +24 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -0
- package/dist/array/impl/array-utils-size.mjs +28 -0
- package/dist/array/impl/array-utils-size.mjs.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
- package/dist/array/impl/array-utils-slicing.d.mts +120 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slicing.mjs +140 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
- package/dist/array/impl/array-utils-transformation.d.mts +348 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-transformation.mjs +331 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
- package/dist/array/impl/array-utils-validation.d.mts +149 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-validation.mjs +166 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -0
- package/dist/array/impl/index.d.mts +13 -0
- package/dist/array/impl/index.d.mts.map +1 -0
- package/dist/array/impl/index.mjs +13 -0
- package/dist/array/impl/index.mjs.map +1 -0
- package/dist/array/index.d.mts +1 -1
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +2 -1
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +83 -253
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +33 -164
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -163
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +74 -94
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +828 -345
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +200 -242
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +397 -205
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +102 -184
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +155 -135
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +55 -156
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -154
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +54 -203
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +3 -0
- package/dist/entry-point.d.mts.map +1 -0
- package/dist/entry-point.mjs +62 -0
- package/dist/entry-point.mjs.map +1 -0
- package/dist/expect-type.d.mts +43 -172
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +43 -172
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.d.mts +35 -140
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +282 -160
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +131 -71
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +59 -113
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +433 -332
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +233 -239
- package/dist/functional/result.mjs.map +1 -1
- package/dist/globals.d.mts +12 -5
- package/dist/guard/has-key.d.mts +23 -74
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +23 -74
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +20 -87
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +20 -87
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts +14 -84
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +14 -84
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts +13 -126
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +13 -126
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +21 -132
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +21 -132
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +201 -238
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +201 -238
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +22 -139
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +22 -139
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.d.mts +29 -62
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +191 -121
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +238 -136
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +24 -156
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +27 -159
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +122 -120
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +122 -120
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +22 -30
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +22 -30
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +22 -31
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +22 -31
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +24 -34
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +26 -35
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +15 -30
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +15 -30
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +27 -35
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +29 -36
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +29 -43
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +133 -123
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +133 -123
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +24 -35
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +24 -35
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +24 -35
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +24 -35
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +160 -34
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +24 -35
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +24 -35
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +26 -36
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +26 -36
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +140 -99
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +142 -101
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +24 -33
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +25 -34
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +121 -30
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +121 -30
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +26 -34
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +26 -34
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +26 -68
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +26 -68
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +37 -101
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +39 -170
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +45 -55
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +46 -155
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +145 -206
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +143 -199
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +97 -21
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +91 -20
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +126 -208
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +68 -102
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts +12 -88
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +13 -89
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts +12 -168
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +13 -169
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/if-then.d.mts +6 -83
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +6 -83
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +12 -136
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.d.mts +14 -157
- package/dist/others/memoize-function.d.mts.map +1 -1
- package/dist/others/memoize-function.mjs +14 -157
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts +33 -151
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +33 -151
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts +11 -125
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +14 -127
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +33 -20
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +34 -21
- package/dist/promise/promise.mjs.map +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +54 -50
- package/src/array/impl/array-utils-creation.mts +192 -0
- package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
- package/src/array/impl/array-utils-element-access.mts +115 -0
- package/src/array/impl/array-utils-element-access.test.mts +151 -0
- package/src/array/impl/array-utils-iterators.mts +79 -0
- package/src/array/impl/array-utils-iterators.test.mts +98 -0
- package/src/array/impl/array-utils-modification.mts +434 -0
- package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
- package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
- package/src/array/impl/array-utils-reducing-value.mts +551 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
- package/src/array/impl/array-utils-search.mts +509 -0
- package/src/array/impl/array-utils-search.test.mts +346 -0
- package/src/array/impl/array-utils-set-op.mts +166 -0
- package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
- package/src/array/impl/array-utils-size.mts +30 -0
- package/src/array/impl/array-utils-size.test.mts +9 -0
- package/src/array/impl/array-utils-slice-clamped.mts +51 -0
- package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
- package/src/array/impl/array-utils-slicing.mts +275 -0
- package/src/array/impl/array-utils-slicing.test.mts +158 -0
- package/src/array/impl/array-utils-transformation.mts +746 -0
- package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
- package/src/array/impl/array-utils-validation.mts +241 -0
- package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
- package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
- package/src/array/impl/index.mts +12 -0
- package/src/array/index.mts +1 -1
- package/src/collections/imap-mapped.mts +99 -265
- package/src/collections/imap.mts +477 -174
- package/src/collections/imap.test.mts +12 -19
- package/src/collections/iset-mapped.mts +892 -358
- package/src/collections/iset.mts +429 -213
- package/src/collections/queue.mts +174 -200
- package/src/collections/stack.mts +172 -245
- package/src/collections/stack.test.mts +9 -1
- package/src/entry-point.mts +2 -0
- package/src/expect-type.mts +43 -172
- package/src/functional/match.mts +35 -145
- package/src/functional/optional.mts +285 -163
- package/src/functional/optional.test.mts +4 -1
- package/src/functional/pipe.mts +60 -113
- package/src/functional/result.mts +452 -351
- package/src/functional/result.test.mts +9 -2
- package/src/globals.d.mts +12 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +1 -1
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-record.test.mts +0 -1
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +7 -7
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -1
- package/src/iterator/range.mts +29 -62
- package/src/json/json.mts +202 -134
- package/src/json/json.test.mts +1 -3
- package/src/number/branded-types/finite-number.mts +27 -159
- package/src/number/branded-types/int.mts +122 -120
- package/src/number/branded-types/int16.mts +22 -30
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +22 -31
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +31 -39
- package/src/number/branded-types/non-negative-int16.mts +24 -34
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +26 -35
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +25 -40
- package/src/number/branded-types/non-zero-int.mts +15 -30
- package/src/number/branded-types/non-zero-int16.mts +27 -35
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +29 -36
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +39 -40
- package/src/number/branded-types/non-zero-uint16.mts +24 -35
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +24 -35
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +29 -43
- package/src/number/branded-types/positive-int.mts +134 -124
- package/src/number/branded-types/positive-int16.mts +24 -35
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +24 -35
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +160 -34
- package/src/number/branded-types/positive-uint16.mts +24 -35
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +26 -36
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +142 -101
- package/src/number/branded-types/safe-uint.mts +25 -34
- package/src/number/branded-types/uint.mts +121 -30
- package/src/number/branded-types/uint16.mts +26 -34
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +26 -68
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +39 -170
- package/src/number/enum/uint8.mts +46 -155
- package/src/number/num.mts +157 -212
- package/src/number/num.test.mts +4 -4
- package/src/number/refined-number-utils.mts +109 -26
- package/src/object/object.mts +130 -212
- package/src/object/object.test.mts +29 -0
- package/src/others/cast-mutable.mts +13 -89
- package/src/others/cast-mutable.test.mts +80 -0
- package/src/others/cast-readonly.mts +13 -169
- package/src/others/if-then.mts +6 -83
- package/src/others/map-nullable.mts +12 -136
- package/src/others/map-nullable.test.mts +6 -6
- package/src/others/memoize-function.mts +14 -157
- package/src/others/tuple.mts +33 -151
- package/src/others/unknown-to-string.mts +15 -127
- package/src/others/unknown-to-string.test.mts +14 -2
- package/src/promise/promise.mts +34 -21
- package/src/promise/promise.test.mts +43 -0
- package/dist/array/array-utils.d.mts +0 -2956
- package/dist/array/array-utils.d.mts.map +0 -1
- package/dist/array/array-utils.mjs +0 -1838
- package/dist/array/array-utils.mjs.map +0 -1
- package/src/array/array-utils-search.test.mts +0 -169
- package/src/array/array-utils-slicing.test.mts +0 -274
- package/src/array/array-utils.mts +0 -4834
package/src/guard/is-type.mts
CHANGED
|
@@ -2,25 +2,23 @@
|
|
|
2
2
|
* Type guard that checks if a value is `undefined`.
|
|
3
3
|
*
|
|
4
4
|
* **Type Narrowing Behavior:**
|
|
5
|
+
*
|
|
5
6
|
* - Narrows the input type to `undefined` when `true`
|
|
6
7
|
* - Useful for explicit undefined checks
|
|
7
8
|
*
|
|
8
|
-
* @param u - The value to check
|
|
9
|
-
* @returns `true` if `u` is `undefined`, `false` otherwise.
|
|
10
|
-
* When `true`, TypeScript narrows the type to `undefined`.
|
|
11
|
-
*
|
|
12
9
|
* @example
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* // value is now typed as string
|
|
21
|
-
* console.log('Value length:', value.length);
|
|
22
|
-
* }
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const values: (number | undefined)[] = [1, undefined, 2];
|
|
13
|
+
*
|
|
14
|
+
* const undefinedValues = values.filter(isUndefined);
|
|
15
|
+
*
|
|
16
|
+
* assert.deepStrictEqual(undefinedValues, [undefined]);
|
|
23
17
|
* ```
|
|
18
|
+
*
|
|
19
|
+
* @param u - The value to check
|
|
20
|
+
* @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,
|
|
21
|
+
* TypeScript narrows the type to `undefined`.
|
|
24
22
|
*/
|
|
25
23
|
export const isUndefined = (u: unknown): u is undefined => u === undefined;
|
|
26
24
|
|
|
@@ -28,27 +26,25 @@ export const isUndefined = (u: unknown): u is undefined => u === undefined;
|
|
|
28
26
|
* Type guard that checks if a value is not `undefined`.
|
|
29
27
|
*
|
|
30
28
|
* **Type Narrowing Behavior:**
|
|
29
|
+
*
|
|
31
30
|
* - Excludes `undefined` from the input type when `true`
|
|
32
31
|
* - Preserves all other types in the union
|
|
33
32
|
* - Commonly used to filter out undefined values
|
|
34
33
|
*
|
|
35
|
-
* @template T - The type of the input value
|
|
36
|
-
* @param u - The value to check
|
|
37
|
-
* @returns `true` if `u` is not `undefined`, `false` otherwise.
|
|
38
|
-
* When `true`, TypeScript excludes `undefined` from the type.
|
|
39
|
-
*
|
|
40
34
|
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* const items: (string | undefined)[] = ['a', undefined, 'b', undefined, 'c'];
|
|
43
35
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
36
|
+
* ```ts
|
|
37
|
+
* const values: (number | undefined)[] = [1, undefined, 2];
|
|
46
38
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* });
|
|
39
|
+
* const definedValues = values.filter(isNotUndefined);
|
|
40
|
+
*
|
|
41
|
+
* assert.deepStrictEqual(definedValues, [1, 2]);
|
|
51
42
|
* ```
|
|
43
|
+
*
|
|
44
|
+
* @template T - The type of the input value
|
|
45
|
+
* @param u - The value to check
|
|
46
|
+
* @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,
|
|
47
|
+
* TypeScript excludes `undefined` from the type.
|
|
52
48
|
*/
|
|
53
49
|
export const isNotUndefined = <T,>(u: T): u is RelaxedExclude<T, undefined> =>
|
|
54
50
|
u !== undefined;
|
|
@@ -57,22 +53,23 @@ export const isNotUndefined = <T,>(u: T): u is RelaxedExclude<T, undefined> =>
|
|
|
57
53
|
* Type guard that checks if a value is a boolean.
|
|
58
54
|
*
|
|
59
55
|
* **Type Narrowing Behavior:**
|
|
56
|
+
*
|
|
60
57
|
* - Narrows `unknown` to `boolean` when `true`
|
|
61
58
|
* - Preserves literal boolean types (`true | false`)
|
|
62
59
|
*
|
|
63
|
-
* @param u - The value to check
|
|
64
|
-
* @returns `true` if `u` is a boolean, `false` otherwise.
|
|
65
|
-
* When `true`, TypeScript narrows the type to `boolean`.
|
|
66
|
-
*
|
|
67
60
|
* @example
|
|
68
|
-
* ```typescript
|
|
69
|
-
* const userInput: unknown = parseInput();
|
|
70
61
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* const flags: unknown[] = [true, 'no', false];
|
|
64
|
+
*
|
|
65
|
+
* const booleans = flags.filter(isBoolean);
|
|
66
|
+
*
|
|
67
|
+
* assert.deepStrictEqual(booleans, [true, false]);
|
|
75
68
|
* ```
|
|
69
|
+
*
|
|
70
|
+
* @param u - The value to check
|
|
71
|
+
* @returns `true` if `u` is a boolean, `false` otherwise. When `true`,
|
|
72
|
+
* TypeScript narrows the type to `boolean`.
|
|
76
73
|
*/
|
|
77
74
|
export const isBoolean = (u: unknown): u is boolean => typeof u === 'boolean';
|
|
78
75
|
|
|
@@ -80,24 +77,24 @@ export const isBoolean = (u: unknown): u is boolean => typeof u === 'boolean';
|
|
|
80
77
|
* Type guard that checks if a value is not a boolean.
|
|
81
78
|
*
|
|
82
79
|
* **Type Narrowing Behavior:**
|
|
80
|
+
*
|
|
83
81
|
* - Excludes `boolean` from the input type when `true`
|
|
84
82
|
* - Preserves all other types in the union
|
|
85
83
|
*
|
|
86
|
-
* @template T - The type of the input value
|
|
87
|
-
* @param u - The value to check
|
|
88
|
-
* @returns `true` if `u` is not a boolean, `false` otherwise.
|
|
89
|
-
* When `true`, TypeScript excludes `boolean` from the type.
|
|
90
|
-
*
|
|
91
84
|
* @example
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* const
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* }
|
|
85
|
+
*
|
|
86
|
+
* ```ts
|
|
87
|
+
* const flags: unknown[] = [true, 'no', false];
|
|
88
|
+
*
|
|
89
|
+
* const nonBooleans = flags.filter(isNotBoolean);
|
|
90
|
+
*
|
|
91
|
+
* assert.deepStrictEqual(nonBooleans, ['no']);
|
|
100
92
|
* ```
|
|
93
|
+
*
|
|
94
|
+
* @template T - The type of the input value
|
|
95
|
+
* @param u - The value to check
|
|
96
|
+
* @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,
|
|
97
|
+
* TypeScript excludes `boolean` from the type.
|
|
101
98
|
*/
|
|
102
99
|
export const isNotBoolean = <T,>(u: T): u is RelaxedExclude<T, boolean> =>
|
|
103
100
|
typeof u !== 'boolean';
|
|
@@ -106,28 +103,24 @@ export const isNotBoolean = <T,>(u: T): u is RelaxedExclude<T, boolean> =>
|
|
|
106
103
|
* Type guard that checks if a value is a number.
|
|
107
104
|
*
|
|
108
105
|
* **Type Narrowing Behavior:**
|
|
106
|
+
*
|
|
109
107
|
* - Narrows `unknown` to `number` when `true`
|
|
110
108
|
* - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers
|
|
111
109
|
* - Preserves literal number types when possible
|
|
112
110
|
*
|
|
113
|
-
* @param u - The value to check
|
|
114
|
-
* @returns `true` if `u` is a number, `false` otherwise.
|
|
115
|
-
* When `true`, TypeScript narrows the type to `number`.
|
|
116
|
-
*
|
|
117
111
|
* @example
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* // Note: this includes NaN and Infinity
|
|
126
|
-
* if (Number.isFinite(userInput)) {
|
|
127
|
-
* console.log('Finite number:', userInput);
|
|
128
|
-
* }
|
|
129
|
-
* }
|
|
112
|
+
*
|
|
113
|
+
* ```ts
|
|
114
|
+
* const mixed: unknown[] = [1, '2', 3];
|
|
115
|
+
*
|
|
116
|
+
* const numbers = mixed.filter(isNumber);
|
|
117
|
+
*
|
|
118
|
+
* assert.deepStrictEqual(numbers, [1, 3]);
|
|
130
119
|
* ```
|
|
120
|
+
*
|
|
121
|
+
* @param u - The value to check
|
|
122
|
+
* @returns `true` if `u` is a number, `false` otherwise. When `true`,
|
|
123
|
+
* TypeScript narrows the type to `number`.
|
|
131
124
|
*/
|
|
132
125
|
export const isNumber = (u: unknown): u is number => typeof u === 'number';
|
|
133
126
|
|
|
@@ -135,22 +128,24 @@ export const isNumber = (u: unknown): u is number => typeof u === 'number';
|
|
|
135
128
|
* Type guard that checks if a value is not a number.
|
|
136
129
|
*
|
|
137
130
|
* **Type Narrowing Behavior:**
|
|
131
|
+
*
|
|
138
132
|
* - Excludes `number` from the input type when `true`
|
|
139
133
|
* - Preserves all other types in the union
|
|
140
134
|
*
|
|
141
|
-
* @template T - The type of the input value
|
|
142
|
-
* @param u - The value to check
|
|
143
|
-
* @returns `true` if `u` is not a number, `false` otherwise.
|
|
144
|
-
* When `true`, TypeScript excludes `number` from the type.
|
|
145
|
-
*
|
|
146
135
|
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* type Value = string | number | boolean;
|
|
149
|
-
* const values: Value[] = ['hello', 42, true, 3.14, false];
|
|
150
136
|
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* const mixed: unknown[] = [1, '2', 3];
|
|
139
|
+
*
|
|
140
|
+
* const nonNumbers = mixed.filter(isNotNumber);
|
|
141
|
+
*
|
|
142
|
+
* assert.deepStrictEqual(nonNumbers, ['2']);
|
|
153
143
|
* ```
|
|
144
|
+
*
|
|
145
|
+
* @template T - The type of the input value
|
|
146
|
+
* @param u - The value to check
|
|
147
|
+
* @returns `true` if `u` is not a number, `false` otherwise. When `true`,
|
|
148
|
+
* TypeScript excludes `number` from the type.
|
|
154
149
|
*/
|
|
155
150
|
export const isNotNumber = <T,>(u: T): u is RelaxedExclude<T, number> =>
|
|
156
151
|
typeof u !== 'number';
|
|
@@ -159,23 +154,23 @@ export const isNotNumber = <T,>(u: T): u is RelaxedExclude<T, number> =>
|
|
|
159
154
|
* Type guard that checks if a value is a bigint.
|
|
160
155
|
*
|
|
161
156
|
* **Type Narrowing Behavior:**
|
|
157
|
+
*
|
|
162
158
|
* - Narrows `unknown` to `bigint` when `true`
|
|
163
159
|
* - Identifies values created with `BigInt()` constructor or `n` suffix
|
|
164
160
|
*
|
|
165
|
-
* @param u - The value to check
|
|
166
|
-
* @returns `true` if `u` is a bigint, `false` otherwise.
|
|
167
|
-
* When `true`, TypeScript narrows the type to `bigint`.
|
|
168
|
-
*
|
|
169
161
|
* @example
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* }
|
|
162
|
+
*
|
|
163
|
+
* ```ts
|
|
164
|
+
* const values: unknown[] = [1n, 2, 3n];
|
|
165
|
+
*
|
|
166
|
+
* const bigints = values.filter(isBigint);
|
|
167
|
+
*
|
|
168
|
+
* assert.deepStrictEqual(bigints, [1n, 3n]);
|
|
178
169
|
* ```
|
|
170
|
+
*
|
|
171
|
+
* @param u - The value to check
|
|
172
|
+
* @returns `true` if `u` is a bigint, `false` otherwise. When `true`,
|
|
173
|
+
* TypeScript narrows the type to `bigint`.
|
|
179
174
|
*/
|
|
180
175
|
export const isBigint = (u: unknown): u is bigint => typeof u === 'bigint';
|
|
181
176
|
|
|
@@ -183,24 +178,24 @@ export const isBigint = (u: unknown): u is bigint => typeof u === 'bigint';
|
|
|
183
178
|
* Type guard that checks if a value is not a bigint.
|
|
184
179
|
*
|
|
185
180
|
* **Type Narrowing Behavior:**
|
|
181
|
+
*
|
|
186
182
|
* - Excludes `bigint` from the input type when `true`
|
|
187
183
|
* - Preserves all other types in the union
|
|
188
184
|
*
|
|
189
|
-
* @template T - The type of the input value
|
|
190
|
-
* @param u - The value to check
|
|
191
|
-
* @returns `true` if `u` is not a bigint, `false` otherwise.
|
|
192
|
-
* When `true`, TypeScript excludes `bigint` from the type.
|
|
193
|
-
*
|
|
194
185
|
* @example
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
* const
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
* }
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* const values: unknown[] = [1n, 2, 3n];
|
|
189
|
+
*
|
|
190
|
+
* const nonBigints = values.filter(isNotBigint);
|
|
191
|
+
*
|
|
192
|
+
* assert.deepStrictEqual(nonBigints, [2]);
|
|
203
193
|
* ```
|
|
194
|
+
*
|
|
195
|
+
* @template T - The type of the input value
|
|
196
|
+
* @param u - The value to check
|
|
197
|
+
* @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,
|
|
198
|
+
* TypeScript excludes `bigint` from the type.
|
|
204
199
|
*/
|
|
205
200
|
export const isNotBigint = <T,>(u: T): u is RelaxedExclude<T, bigint> =>
|
|
206
201
|
typeof u !== 'bigint';
|
|
@@ -209,29 +204,24 @@ export const isNotBigint = <T,>(u: T): u is RelaxedExclude<T, bigint> =>
|
|
|
209
204
|
* Type guard that checks if a value is a string.
|
|
210
205
|
*
|
|
211
206
|
* **Type Narrowing Behavior:**
|
|
207
|
+
*
|
|
212
208
|
* - Narrows `unknown` to `string` when `true`
|
|
213
209
|
* - Preserves literal string types when possible
|
|
214
210
|
* - Includes empty strings
|
|
215
211
|
*
|
|
216
|
-
* @param u - The value to check
|
|
217
|
-
* @returns `true` if `u` is a string, `false` otherwise.
|
|
218
|
-
* When `true`, TypeScript narrows the type to `string`.
|
|
219
|
-
*
|
|
220
212
|
* @example
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
* // You can further check for non-empty strings
|
|
230
|
-
* if (userInput.length > 0) {
|
|
231
|
-
* console.log('Non-empty string:', userInput);
|
|
232
|
-
* }
|
|
233
|
-
* }
|
|
213
|
+
*
|
|
214
|
+
* ```ts
|
|
215
|
+
* const values: unknown[] = ['Ada', 42, 'Lovelace'];
|
|
216
|
+
*
|
|
217
|
+
* const strings = values.filter(isString);
|
|
218
|
+
*
|
|
219
|
+
* assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);
|
|
234
220
|
* ```
|
|
221
|
+
*
|
|
222
|
+
* @param u - The value to check
|
|
223
|
+
* @returns `true` if `u` is a string, `false` otherwise. When `true`,
|
|
224
|
+
* TypeScript narrows the type to `string`.
|
|
235
225
|
*/
|
|
236
226
|
export const isString = (u: unknown): u is string => typeof u === 'string';
|
|
237
227
|
|
|
@@ -239,22 +229,24 @@ export const isString = (u: unknown): u is string => typeof u === 'string';
|
|
|
239
229
|
* Type guard that checks if a value is not a string.
|
|
240
230
|
*
|
|
241
231
|
* **Type Narrowing Behavior:**
|
|
232
|
+
*
|
|
242
233
|
* - Excludes `string` from the input type when `true`
|
|
243
234
|
* - Preserves all other types in the union
|
|
244
235
|
*
|
|
245
|
-
* @template T - The type of the input value
|
|
246
|
-
* @param u - The value to check
|
|
247
|
-
* @returns `true` if `u` is not a string, `false` otherwise.
|
|
248
|
-
* When `true`, TypeScript excludes `string` from the type.
|
|
249
|
-
*
|
|
250
236
|
* @example
|
|
251
|
-
* ```typescript
|
|
252
|
-
* type Value = string | number | boolean;
|
|
253
|
-
* const mixedValues: Value[] = ['hello', 42, true, 'world', 3.14];
|
|
254
237
|
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
238
|
+
* ```ts
|
|
239
|
+
* const values: unknown[] = ['Ada', 42, 'Lovelace'];
|
|
240
|
+
*
|
|
241
|
+
* const nonStrings = values.filter(isNotString);
|
|
242
|
+
*
|
|
243
|
+
* assert.deepStrictEqual(nonStrings, [42]);
|
|
257
244
|
* ```
|
|
245
|
+
*
|
|
246
|
+
* @template T - The type of the input value
|
|
247
|
+
* @param u - The value to check
|
|
248
|
+
* @returns `true` if `u` is not a string, `false` otherwise. When `true`,
|
|
249
|
+
* TypeScript excludes `string` from the type.
|
|
258
250
|
*/
|
|
259
251
|
export const isNotString = <T,>(u: T): u is RelaxedExclude<T, string> =>
|
|
260
252
|
typeof u !== 'string';
|
|
@@ -263,23 +255,25 @@ export const isNotString = <T,>(u: T): u is RelaxedExclude<T, string> =>
|
|
|
263
255
|
* Type guard that checks if a value is a symbol.
|
|
264
256
|
*
|
|
265
257
|
* **Type Narrowing Behavior:**
|
|
258
|
+
*
|
|
266
259
|
* - Narrows `unknown` to `symbol` when `true`
|
|
267
260
|
* - Identifies values created with `Symbol()` constructor
|
|
268
261
|
*
|
|
269
|
-
* @param u - The value to check
|
|
270
|
-
* @returns `true` if `u` is a symbol, `false` otherwise.
|
|
271
|
-
* When `true`, TypeScript narrows the type to `symbol`.
|
|
272
|
-
*
|
|
273
262
|
* @example
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
263
|
+
*
|
|
264
|
+
* ```ts
|
|
265
|
+
* const id = Symbol('id');
|
|
266
|
+
* const shared = Symbol.for('shared');
|
|
267
|
+
* const tokens: unknown[] = [id, 'shared', shared];
|
|
268
|
+
*
|
|
269
|
+
* const symbols = tokens.filter(isSymbol);
|
|
270
|
+
*
|
|
271
|
+
* assert.deepStrictEqual(symbols, [id, shared]);
|
|
282
272
|
* ```
|
|
273
|
+
*
|
|
274
|
+
* @param u - The value to check
|
|
275
|
+
* @returns `true` if `u` is a symbol, `false` otherwise. When `true`,
|
|
276
|
+
* TypeScript narrows the type to `symbol`.
|
|
283
277
|
*/
|
|
284
278
|
export const isSymbol = (u: unknown): u is symbol => typeof u === 'symbol';
|
|
285
279
|
|
|
@@ -287,24 +281,25 @@ export const isSymbol = (u: unknown): u is symbol => typeof u === 'symbol';
|
|
|
287
281
|
* Type guard that checks if a value is not a symbol.
|
|
288
282
|
*
|
|
289
283
|
* **Type Narrowing Behavior:**
|
|
284
|
+
*
|
|
290
285
|
* - Excludes `symbol` from the input type when `true`
|
|
291
286
|
* - Preserves all other types in the union
|
|
292
287
|
*
|
|
293
|
-
* @template T - The type of the input value
|
|
294
|
-
* @param u - The value to check
|
|
295
|
-
* @returns `true` if `u` is not a symbol, `false` otherwise.
|
|
296
|
-
* When `true`, TypeScript excludes `symbol` from the type.
|
|
297
|
-
*
|
|
298
288
|
* @example
|
|
299
|
-
*
|
|
300
|
-
*
|
|
301
|
-
* const
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
289
|
+
*
|
|
290
|
+
* ```ts
|
|
291
|
+
* const id = Symbol('id');
|
|
292
|
+
* const tokens: unknown[] = [id, 'shared'];
|
|
293
|
+
*
|
|
294
|
+
* const nonSymbols = tokens.filter(isNotSymbol);
|
|
295
|
+
*
|
|
296
|
+
* assert.deepStrictEqual(nonSymbols, ['shared']);
|
|
307
297
|
* ```
|
|
298
|
+
*
|
|
299
|
+
* @template T - The type of the input value
|
|
300
|
+
* @param u - The value to check
|
|
301
|
+
* @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,
|
|
302
|
+
* TypeScript excludes `symbol` from the type.
|
|
308
303
|
*/
|
|
309
304
|
export const isNotSymbol = <T,>(u: T): u is RelaxedExclude<T, symbol> =>
|
|
310
305
|
typeof u !== 'symbol';
|
|
@@ -313,25 +308,23 @@ export const isNotSymbol = <T,>(u: T): u is RelaxedExclude<T, symbol> =>
|
|
|
313
308
|
* Type guard that checks if a value is `null`.
|
|
314
309
|
*
|
|
315
310
|
* **Type Narrowing Behavior:**
|
|
311
|
+
*
|
|
316
312
|
* - Narrows the input type to `null` when `true`
|
|
317
313
|
* - Useful for explicit null checks
|
|
318
314
|
*
|
|
319
|
-
* @param u - The value to check
|
|
320
|
-
* @returns `true` if `u` is `null`, `false` otherwise.
|
|
321
|
-
* When `true`, TypeScript narrows the type to `null`.
|
|
322
|
-
*
|
|
323
315
|
* @example
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
*
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
331
|
-
* // value is now typed as string
|
|
332
|
-
* console.log('Value length:', value.length);
|
|
333
|
-
* }
|
|
316
|
+
*
|
|
317
|
+
* ```ts
|
|
318
|
+
* const values: readonly (number | null)[] = [null, 5] as const;
|
|
319
|
+
*
|
|
320
|
+
* const nullValues = values.filter(isNull);
|
|
321
|
+
*
|
|
322
|
+
* assert.deepStrictEqual(nullValues, [null]);
|
|
334
323
|
* ```
|
|
324
|
+
*
|
|
325
|
+
* @param u - The value to check
|
|
326
|
+
* @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript
|
|
327
|
+
* narrows the type to `null`.
|
|
335
328
|
*/
|
|
336
329
|
export const isNull = (u: unknown): u is null => u === null;
|
|
337
330
|
|
|
@@ -339,112 +332,82 @@ export const isNull = (u: unknown): u is null => u === null;
|
|
|
339
332
|
* Type guard that checks if a value is not `null`.
|
|
340
333
|
*
|
|
341
334
|
* **Type Narrowing Behavior:**
|
|
335
|
+
*
|
|
342
336
|
* - Excludes `null` from the input type when `true`
|
|
343
337
|
* - Preserves all other types including `undefined`
|
|
344
338
|
* - Commonly used to filter out null values
|
|
345
339
|
*
|
|
346
|
-
* @template T - The type of the input value (which could be `null`)
|
|
347
|
-
* @param u - The value to check
|
|
348
|
-
* @returns `true` if `u` is not `null`, `false` otherwise.
|
|
349
|
-
* When `true`, TypeScript excludes `null` from the type.
|
|
350
|
-
*
|
|
351
340
|
* @example
|
|
352
|
-
* ```typescript
|
|
353
|
-
* const items: (string | null)[] = ['a', null, 'b', null, 'c'];
|
|
354
341
|
*
|
|
355
|
-
*
|
|
356
|
-
*
|
|
342
|
+
* ```ts
|
|
343
|
+
* const values: (number | null)[] = [null, 5];
|
|
344
|
+
*
|
|
345
|
+
* const nonNullValues = values.filter(isNotNull);
|
|
357
346
|
*
|
|
358
|
-
*
|
|
359
|
-
* // item is guaranteed to be string, not null
|
|
360
|
-
* console.log(item.toUpperCase());
|
|
361
|
-
* });
|
|
347
|
+
* assert.deepStrictEqual(nonNullValues, [5]);
|
|
362
348
|
* ```
|
|
349
|
+
*
|
|
350
|
+
* @template T - The type of the input value (which could be `null`)
|
|
351
|
+
* @param u - The value to check
|
|
352
|
+
* @returns `true` if `u` is not `null`, `false` otherwise. When `true`,
|
|
353
|
+
* TypeScript excludes `null` from the type.
|
|
363
354
|
*/
|
|
364
355
|
export const isNotNull = <T,>(u: T | null): u is T => u !== null;
|
|
365
356
|
|
|
366
357
|
/**
|
|
367
358
|
* Type guard that checks if a value is `null` or `undefined` (nullish).
|
|
368
359
|
*
|
|
369
|
-
* This function uses the loose equality operator (`==`) to check for both
|
|
370
|
-
* in a single comparison, which is the standard
|
|
360
|
+
* This function uses the loose equality operator (`==`) to check for both
|
|
361
|
+
* `null` and `undefined` in a single comparison, which is the standard
|
|
362
|
+
* JavaScript idiom for nullish checks.
|
|
371
363
|
*
|
|
372
364
|
* **Type Narrowing Behavior:**
|
|
365
|
+
*
|
|
373
366
|
* - Narrows the input type to `null | undefined` when `true`
|
|
374
367
|
* - Useful for checking if a value is "nullish" (either null or undefined)
|
|
375
368
|
*
|
|
376
|
-
* @param u - The value to check
|
|
377
|
-
* @returns `true` if `u` is `null` or `undefined`, `false` otherwise.
|
|
378
|
-
* When `true`, TypeScript narrows the type to `null | undefined`.
|
|
379
|
-
*
|
|
380
369
|
* @example
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
* // value is now typed as string
|
|
389
|
-
* console.log('Value length:', value.length);
|
|
390
|
-
* }
|
|
370
|
+
*
|
|
371
|
+
* ```ts
|
|
372
|
+
* const values: (string | null | undefined)[] = ['Ada', null, undefined];
|
|
373
|
+
*
|
|
374
|
+
* const nullishValues = values.filter(isNullish);
|
|
375
|
+
*
|
|
376
|
+
* assert.deepStrictEqual(nullishValues, [null, undefined]);
|
|
391
377
|
* ```
|
|
378
|
+
*
|
|
379
|
+
* @param u - The value to check
|
|
380
|
+
* @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When
|
|
381
|
+
* `true`, TypeScript narrows the type to `null | undefined`.
|
|
392
382
|
*/
|
|
393
383
|
export const isNullish = (u: unknown): u is null | undefined => u == null;
|
|
394
384
|
|
|
395
385
|
/**
|
|
396
386
|
* Type guard that checks if a value is not `null` or `undefined` (non-nullish).
|
|
397
387
|
*
|
|
398
|
-
* This function uses the loose inequality operator (`!=`) to check that a value
|
|
399
|
-
* `null` nor `undefined` in a single comparison. This is equivalent
|
|
400
|
-
* `NonNullable<T>` utility type.
|
|
388
|
+
* This function uses the loose inequality operator (`!=`) to check that a value
|
|
389
|
+
* is neither `null` nor `undefined` in a single comparison. This is equivalent
|
|
390
|
+
* to TypeScript's `NonNullable<T>` utility type.
|
|
401
391
|
*
|
|
402
392
|
* **Type Narrowing Behavior:**
|
|
393
|
+
*
|
|
403
394
|
* - Excludes both `null` and `undefined` from the input type when `true`
|
|
404
395
|
* - Equivalent to applying TypeScript's `NonNullable<T>` utility type
|
|
405
396
|
* - Commonly used to filter out nullish values from arrays
|
|
406
397
|
*
|
|
407
|
-
* @template T - The type of the input value
|
|
408
|
-
* @param u - The value to check
|
|
409
|
-
* @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
|
|
410
|
-
* When `true`, TypeScript narrows the type to `NonNullable<T>`.
|
|
411
|
-
*
|
|
412
398
|
* @example
|
|
413
|
-
* ```typescript
|
|
414
|
-
* const items: (string | null | undefined)[] = [
|
|
415
|
-
* 'hello',
|
|
416
|
-
* null,
|
|
417
|
-
* 'world',
|
|
418
|
-
* undefined,
|
|
419
|
-
* 'test'
|
|
420
|
-
* ];
|
|
421
|
-
*
|
|
422
|
-
* const definedItems = items.filter(isNonNullish);
|
|
423
|
-
* // definedItems is now string[] - both null and undefined values are filtered out
|
|
424
|
-
*
|
|
425
|
-
* definedItems.forEach(item => {
|
|
426
|
-
* // item is guaranteed to be string, never null or undefined
|
|
427
|
-
* console.log(item.toUpperCase());
|
|
428
|
-
* });
|
|
429
|
-
* ```
|
|
430
399
|
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
*
|
|
437
|
-
* email?: string;
|
|
438
|
-
* };
|
|
439
|
-
* }
|
|
440
|
-
*
|
|
441
|
-
* const user: User = getUser();
|
|
442
|
-
*
|
|
443
|
-
* // Instead of optional chaining: user.profile?.name
|
|
444
|
-
* if (isNonNullish(user.profile) && isNonNullish(user.profile.name)) {
|
|
445
|
-
* // user.profile.name is now guaranteed to be string
|
|
446
|
-
* console.log('User name:', user.profile.name.toUpperCase());
|
|
447
|
-
* }
|
|
400
|
+
* ```ts
|
|
401
|
+
* const values: (string | null | undefined)[] = ['Ada', null, undefined];
|
|
402
|
+
*
|
|
403
|
+
* const definedValues = values.filter(isNonNullish);
|
|
404
|
+
*
|
|
405
|
+
* assert.deepStrictEqual(definedValues, ['Ada']);
|
|
448
406
|
* ```
|
|
407
|
+
*
|
|
408
|
+
* @template T - The type of the input value
|
|
409
|
+
* @param u - The value to check
|
|
410
|
+
* @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
|
|
411
|
+
* When `true`, TypeScript narrows the type to `NonNullable<T>`.
|
|
449
412
|
*/
|
|
450
413
|
export const isNonNullish = <T,>(u: T): u is NonNullable<T> => u != null;
|