type-plus 7.3.0 → 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 CHANGED
@@ -325,6 +325,7 @@ You can learn more in their respective sections:
325
325
  - [undefined](./ts/undefined/readme.md)
326
326
  - [unknown](./ts/unknown/readme.md)
327
327
  - [void](./ts/void/readme.md)
328
+ - [mix types](./ts/mix-types/readme.md)
328
329
 
329
330
  ### any
330
331
 
@@ -1,20 +1,28 @@
1
- import type { IsNever } from '../never/never_type.js';
2
- import type { IsAny } from '../any/any_type.js';
1
+ import type { AnyType } from '../any/any_type.js';
2
+ import type { NeverType } from '../never/never_type.js';
3
3
  /**
4
- * 🐾 Parse `T` to ensure it is either exactly `any` or exactly `never`.
4
+ * Parse `T` to ensure it is either exactly `any` or exactly `never`.
5
+ *
6
+ * 🐾 *parse*
7
+ * 🩳 *shortcut*
5
8
  *
6
9
  * @example
7
10
  * ```ts
8
- * type R = AnyType<any> // any
11
+ * type R = AnyOrNeverType<any> // any
12
+ * type R = AnyOrNeverType<never> // never
13
+ * type R = AnyOrNeverType<never, 1, 2> // 1
9
14
  *
10
- * type R = AnyType<never> // never
11
- * type R = AnyType<unknown> // never
12
- * type R = AnyType<string | boolean> // never
15
+ * type R = AnyOrNeverType<unknown> // never
16
+ * type R = AnyOrNeverType<unknown, 1, 2> // 2
17
+ * type R = AnyOrNeverType<string | boolean> // never
13
18
  * ```
14
19
  */
15
- export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T, Then, Else>>;
20
+ export type AnyOrNeverType<T, Then = T, Else = never> = NeverType<T, Then, AnyType<T, Then, Else>>;
16
21
  /**
17
- * 🎭 Validate if `T` is either exactly `any` or exactly `never`.
22
+ * Validate if `T` is either exactly `any` or exactly `never`.
23
+ *
24
+ * 🎭 *validate*
25
+ * 🩳 *shortcut*
18
26
  *
19
27
  * @example
20
28
  * ```ts
@@ -25,5 +33,5 @@ export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T
25
33
  * type R = IsAnyOrNever<unknown> // false
26
34
  * ```
27
35
  */
28
- export type IsAnyOrNever<T, Then = true, Else = false> = IsNever<T, Then, IsAny<T, Then, Else>>;
36
+ export type IsAnyOrNever<T, Then = true, Else = false> = NeverType<T, Then, AnyType<T, Then, Else>>;
29
37
  //# sourceMappingURL=any_or_never_type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"any_or_never_type.d.ts","sourceRoot":"","sources":["../../ts/mix_types/any_or_never_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"any_or_never_type.d.ts","sourceRoot":"","sources":["../../ts/mix_types/any_or_never_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAElG;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA"}
@@ -1,20 +1,28 @@
1
- import type { IsNever } from '../never/never_type.js';
2
- import type { IsAny } from '../any/any_type.js';
1
+ import type { AnyType } from '../any/any_type.js';
2
+ import type { NeverType } from '../never/never_type.js';
3
3
  /**
4
- * 🐾 Parse `T` to ensure it is either exactly `any` or exactly `never`.
4
+ * Parse `T` to ensure it is either exactly `any` or exactly `never`.
5
+ *
6
+ * 🐾 *parse*
7
+ * 🩳 *shortcut*
5
8
  *
6
9
  * @example
7
10
  * ```ts
8
- * type R = AnyType<any> // any
11
+ * type R = AnyOrNeverType<any> // any
12
+ * type R = AnyOrNeverType<never> // never
13
+ * type R = AnyOrNeverType<never, 1, 2> // 1
9
14
  *
10
- * type R = AnyType<never> // never
11
- * type R = AnyType<unknown> // never
12
- * type R = AnyType<string | boolean> // never
15
+ * type R = AnyOrNeverType<unknown> // never
16
+ * type R = AnyOrNeverType<unknown, 1, 2> // 2
17
+ * type R = AnyOrNeverType<string | boolean> // never
13
18
  * ```
14
19
  */
15
- export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T, Then, Else>>;
20
+ export type AnyOrNeverType<T, Then = T, Else = never> = NeverType<T, Then, AnyType<T, Then, Else>>;
16
21
  /**
17
- * 🎭 Validate if `T` is either exactly `any` or exactly `never`.
22
+ * Validate if `T` is either exactly `any` or exactly `never`.
23
+ *
24
+ * 🎭 *validate*
25
+ * 🩳 *shortcut*
18
26
  *
19
27
  * @example
20
28
  * ```ts
@@ -25,5 +33,5 @@ export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T
25
33
  * type R = IsAnyOrNever<unknown> // false
26
34
  * ```
27
35
  */
28
- export type IsAnyOrNever<T, Then = true, Else = false> = IsNever<T, Then, IsAny<T, Then, Else>>;
36
+ export type IsAnyOrNever<T, Then = true, Else = false> = NeverType<T, Then, AnyType<T, Then, Else>>;
29
37
  //# sourceMappingURL=any_or_never_type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"any_or_never_type.d.ts","sourceRoot":"","sources":["../../ts/mix_types/any_or_never_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"any_or_never_type.d.ts","sourceRoot":"","sources":["../../ts/mix_types/any_or_never_type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAElG;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "7.3.0",
3
+ "version": "7.3.1",
4
4
  "description": "Provides additional types for TypeScript.",
5
- "homepage": "https://github.com/unional/type-plus/tree/main/type-plus",
5
+ "homepage": "https://github.com/unional/type-plus/tree/main/type-plus#readme",
6
6
  "bugs": {
7
7
  "url": "https://github.com/unional/type-plus/issues"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/unional/type-plus.git"
11
+ "url": "https://github.com/unional/type-plus.git",
12
+ "directory": "type-plus"
12
13
  },
13
14
  "license": "MIT",
14
15
  "author": {
package/ts/any/readme.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Any
2
2
 
3
- `any` is one of the two top type in TypeScript. It is the supertype of all types. It is a way to opt-out of type checking and let the values pass through compile-time checks.
3
+ `any` is one of the two top types in TypeScript.
4
+ It is a supertype of all types.
5
+ It is a way to opt-out of type checking and let the values pass through compile-time checks.
4
6
 
5
7
  ## Type Checking
6
8
 
@@ -15,9 +17,24 @@ except `any & never` which is `never`.
15
17
  - [`NotAnyType<T, Then = T, Else = never>`](any_type.ts#L45): check if `T` is not exactly `any`.
16
18
  - [`IsNotAny<T, Then = true, Else = false>`](any_type.ts#L60): is `T` not exactly `any`.
17
19
 
18
- ## Type Utilities
20
+ ## Trivia
19
21
 
20
- - [`IsAnyOrNever<T, Then = true, Else = false>`](any_or_never.ts#L17)]: is `T` type `any` or `never`.
22
+ > Both `any` and `unknown` are top types?
23
+
24
+ Well, yeah:
25
+
26
+ ```ts
27
+ type A = any extends unknown ? 1 : 2 // 1
28
+ type B = unknown extends any ? 1 : 2 // 1
29
+ ```
30
+
31
+ > Aren't using `any` is bad?
32
+
33
+ If you use it to simply tell TypeScript to shut up because you are lazy, then yes.
34
+
35
+ But it is ok to use `any` in many cases, as the type system of TypeScript is not sounded.
36
+
37
+ There are many cases it is not possible to induce the type correctly.
21
38
 
22
39
  ## References
23
40
 
@@ -1,22 +1,30 @@
1
- import type { IsNever } from '../never/never_type.js'
2
- import type { IsAny } from '../any/any_type.js'
1
+ import type { AnyType } from '../any/any_type.js'
2
+ import type { NeverType } from '../never/never_type.js'
3
3
 
4
4
  /**
5
- * 🐾 Parse `T` to ensure it is either exactly `any` or exactly `never`.
5
+ * Parse `T` to ensure it is either exactly `any` or exactly `never`.
6
+ *
7
+ * 🐾 *parse*
8
+ * 🩳 *shortcut*
6
9
  *
7
10
  * @example
8
11
  * ```ts
9
- * type R = AnyType<any> // any
12
+ * type R = AnyOrNeverType<any> // any
13
+ * type R = AnyOrNeverType<never> // never
14
+ * type R = AnyOrNeverType<never, 1, 2> // 1
10
15
  *
11
- * type R = AnyType<never> // never
12
- * type R = AnyType<unknown> // never
13
- * type R = AnyType<string | boolean> // never
16
+ * type R = AnyOrNeverType<unknown> // never
17
+ * type R = AnyOrNeverType<unknown, 1, 2> // 2
18
+ * type R = AnyOrNeverType<string | boolean> // never
14
19
  * ```
15
20
  */
16
- export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T, Then, Else>>
21
+ export type AnyOrNeverType<T, Then = T, Else = never> = NeverType<T, Then, AnyType<T, Then, Else>>
17
22
 
18
23
  /**
19
- * 🎭 Validate if `T` is either exactly `any` or exactly `never`.
24
+ * Validate if `T` is either exactly `any` or exactly `never`.
25
+ *
26
+ * 🎭 *validate*
27
+ * 🩳 *shortcut*
20
28
  *
21
29
  * @example
22
30
  * ```ts
@@ -27,4 +35,4 @@ export type AnyOrNeverType<T, Then = T, Else = never> = IsNever<T, Then, IsAny<T
27
35
  * type R = IsAnyOrNever<unknown> // false
28
36
  * ```
29
37
  */
30
- export type IsAnyOrNever<T, Then = true, Else = false> = IsNever<T, Then, IsAny<T, Then, Else>>
38
+ export type IsAnyOrNever<T, Then = true, Else = false> = NeverType<T, Then, AnyType<T, Then, Else>>
@@ -0,0 +1,34 @@
1
+ # Mix Types
2
+
3
+ This folder contains types and utilities that work across multiple types.
4
+
5
+ ## [AnyOrNeverType](./any_or_never_type.ts)
6
+
7
+ `AnyOrNeverType<T, Then = T, Else = never>` 🎭 🩳
8
+
9
+ Parse `T` to ensure it is either exactly `any` or exactly `never`.
10
+
11
+ ```ts
12
+ import type { AnyOrNeverType } from 'type-plus'
13
+
14
+ type R = AnyOrNeverType<any> // any
15
+ type R = AnyOrNeverType<never> // never
16
+ type R = AnyOrNeverType<never, 1, 2> // 1
17
+
18
+ type R = AnyOrNeverType<unknown, 1, 2> // 2
19
+ ```
20
+
21
+ ## [IsAnyOrNever](./any_or_never_type.ts)
22
+
23
+ `IsAnyOrNever<T, Then = true, Else = false>` 🎭 🩳
24
+
25
+ Validate if `T` is either exactly `any` or exactly `never`.
26
+
27
+ ```ts
28
+ import type { IsAnyOrNever } from 'type-plus'
29
+
30
+ type R = IsAnyOrNever<any> // true
31
+ type R = IsAnyOrNever<never> // true
32
+
33
+ type R = IsAnyOrNever<unknown> // false
34
+ ```