type-plus 7.2.1 → 7.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 +3 -0
- package/cjs/array/array.some.d.ts +1 -1
- package/cjs/merge.d.ts +55 -0
- package/cjs/merge.d.ts.map +1 -0
- package/cjs/merge.js +18 -0
- package/cjs/merge.js.map +1 -0
- package/cjs/mix_types/any_or_never_type.d.ts +18 -10
- package/cjs/mix_types/any_or_never_type.d.ts.map +1 -1
- package/cjs/object/AnyRecord.d.ts +2 -1
- package/cjs/object/AnyRecord.d.ts.map +1 -1
- package/cjs/object/index.d.ts +1 -0
- package/cjs/object/index.d.ts.map +1 -1
- package/cjs/object/index.js.map +1 -1
- package/cjs/object/left_join.d.ts +10 -38
- package/cjs/object/left_join.d.ts.map +1 -1
- package/cjs/object/left_join.js +0 -15
- package/cjs/object/left_join.js.map +1 -1
- package/cjs/object/optional_key.d.ts +35 -0
- package/cjs/object/optional_key.d.ts.map +1 -0
- package/cjs/object/optional_key.js +3 -0
- package/cjs/object/optional_key.js.map +1 -0
- package/cjs/testing/test_type.d.ts +36 -8
- package/cjs/testing/test_type.d.ts.map +1 -1
- package/cjs/testing/test_type.js.map +1 -1
- package/esm/array/array.some.d.ts +1 -1
- package/esm/merge.d.ts +55 -0
- package/esm/merge.d.ts.map +1 -0
- package/esm/merge.js +14 -0
- package/esm/merge.js.map +1 -0
- package/esm/mix_types/any_or_never_type.d.ts +18 -10
- package/esm/mix_types/any_or_never_type.d.ts.map +1 -1
- package/esm/object/AnyRecord.d.ts +2 -1
- package/esm/object/AnyRecord.d.ts.map +1 -1
- package/esm/object/index.d.ts +1 -0
- package/esm/object/index.d.ts.map +1 -1
- package/esm/object/index.js.map +1 -1
- package/esm/object/left_join.d.ts +10 -38
- package/esm/object/left_join.d.ts.map +1 -1
- package/esm/object/left_join.js +1 -13
- package/esm/object/left_join.js.map +1 -1
- package/esm/object/optional_key.d.ts +35 -0
- package/esm/object/optional_key.d.ts.map +1 -0
- package/esm/object/optional_key.js +2 -0
- package/esm/object/optional_key.js.map +1 -0
- package/esm/testing/test_type.d.ts +36 -8
- package/esm/testing/test_type.d.ts.map +1 -1
- package/esm/testing/test_type.js.map +1 -1
- package/package.json +4 -3
- package/ts/any/readme.md +20 -3
- package/ts/array/array.some.ts +1 -1
- package/ts/merge.ts +72 -0
- package/ts/mix_types/any_or_never_type.ts +18 -10
- package/ts/mix_types/readme.md +34 -0
- package/ts/object/AnyRecord.ts +3 -1
- package/ts/object/index.ts +1 -1
- package/ts/object/left_join.ts +15 -38
- package/ts/object/optional_key.ts +38 -0
- package/ts/object/readme.md +37 -0
- package/ts/testing/test_type.ts +37 -8
package/ts/testing/test_type.ts
CHANGED
|
@@ -211,22 +211,27 @@ interface TestType {
|
|
|
211
211
|
/**
|
|
212
212
|
* A quick way to inspect a type.
|
|
213
213
|
*
|
|
214
|
-
* The handler
|
|
214
|
+
* The handler receives a `InspectedType` object.
|
|
215
|
+
* It contains `value` which is typed to `T`,
|
|
216
|
+
* and many other properties to inspect the behavior of `T`.
|
|
215
217
|
*
|
|
216
|
-
*
|
|
218
|
+
* The handler is not being call,
|
|
219
|
+
* it is use to hold the type in value for inspection.
|
|
220
|
+
*
|
|
221
|
+
* 🧪 *testing*
|
|
222
|
+
* 🦴 *utilities*
|
|
217
223
|
*
|
|
218
224
|
* @example
|
|
219
225
|
* ```ts
|
|
220
|
-
* testType.inspect<SomeType>(t =>
|
|
221
|
-
*
|
|
222
|
-
* //
|
|
223
|
-
*
|
|
224
|
-
* ...try out the `r` which is `SomeType` here...
|
|
226
|
+
* testType.inspect<SomeType>(t => {
|
|
227
|
+
* type T = typeof t.value // resolve and inspect the type `T`
|
|
228
|
+
* t.extend_boolean // result of `T extends boolean`
|
|
229
|
+
* })
|
|
225
230
|
* ```
|
|
226
231
|
*
|
|
227
232
|
* After trying out the type, remove the line.
|
|
228
233
|
*/
|
|
229
|
-
inspect<T>(handler: (t: T) => unknown):
|
|
234
|
+
inspect<T>(handler: (t: InspectedType<T>) => unknown): T
|
|
230
235
|
}
|
|
231
236
|
|
|
232
237
|
/**
|
|
@@ -241,3 +246,27 @@ export const testType = new Proxy({} as TestType, {
|
|
|
241
246
|
return (expected: unknown) => expected
|
|
242
247
|
}
|
|
243
248
|
})
|
|
249
|
+
|
|
250
|
+
export type InspectedType<T> = {
|
|
251
|
+
value: T
|
|
252
|
+
extends_any: T extends any ? true : false
|
|
253
|
+
extends_unknown: T extends unknown ? true : false
|
|
254
|
+
extends_void: T extends void ? true : false
|
|
255
|
+
extends_never: T extends never ? true : false
|
|
256
|
+
extends_undefined: T extends undefined ? true : false
|
|
257
|
+
extends_null: T extends null ? true : false
|
|
258
|
+
extends_boolean: T extends boolean ? true : false
|
|
259
|
+
extends_true: T extends true ? true : false
|
|
260
|
+
extends_false: T extends false ? true : false
|
|
261
|
+
extends_number: T extends number ? true : false
|
|
262
|
+
extends_1: T extends 1 ? true : false
|
|
263
|
+
extends_bigint: T extends bigint ? true : false
|
|
264
|
+
extends_1n: T extends 1n ? true : false
|
|
265
|
+
extends_string: T extends string ? true : false
|
|
266
|
+
extends_a: T extends 'a' ? true : false
|
|
267
|
+
extends_symbol: T extends symbol ? true : false
|
|
268
|
+
extends_object: T extends object ? true : false
|
|
269
|
+
extends_function: T extends Function ? true : false
|
|
270
|
+
extends_array_unknown: T extends unknown[] ? true : false
|
|
271
|
+
extends_tuple_empty: T extends [] ? true : false
|
|
272
|
+
}
|