File tree 5 files changed +41
-0
lines changed
5 files changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ " effect " : patch
3
+ ---
4
+
5
+ added Either.Either.{Left,Right} and Option.Option.Value type utils
Original file line number Diff line number Diff line change @@ -165,3 +165,9 @@ pipe(
165
165
_s : string
166
166
) => "b" as const )
167
167
)
168
+
169
+ // $ExpectType number
170
+ export type R = Either . Either . Right < typeof string$number >
171
+
172
+ // $ExpectType string
173
+ export type L = Either . Either . Left < typeof string$number >
Original file line number Diff line number Diff line change @@ -195,3 +195,6 @@ numberOrString.pipe(Option.andThen(numberOrString))
195
195
196
196
// $ExpectType Option<string | number>
197
197
numberOrString . pipe ( Option . andThen ( ( ) => numberOrString ) )
198
+
199
+ // $ExpectType string | number
200
+ export type V = Option . Option . Value < typeof numberOrString >
Original file line number Diff line number Diff line change @@ -90,6 +90,22 @@ export interface EitherTypeLambda extends TypeLambda {
90
90
readonly type : Either < this[ "Target" ] , this[ "Out1" ] >
91
91
}
92
92
93
+ /**
94
+ * @since 2.0.0
95
+ */
96
+ export declare namespace Either {
97
+ /**
98
+ * @since 2.0.0
99
+ * @category type-level
100
+ */
101
+ export type Left < T extends Either < any , any > > = [ T ] extends [ Either < infer _A , infer _E > ] ? _E : never
102
+ /**
103
+ * @since 2.0.0
104
+ * @category type-level
105
+ */
106
+ export type Right < T extends Either < any , any > > = [ T ] extends [ Either < infer _A , infer _E > ] ? _A : never
107
+ }
108
+
93
109
/**
94
110
* Constructs a new `Either` holding a `Right` value. This usually represents a successful value due to the right bias
95
111
* of this structure.
Original file line number Diff line number Diff line change @@ -75,6 +75,17 @@ export interface OptionUnify<A extends { [Unify.typeSymbol]?: any }> {
75
75
Option ?: ( ) => A [ Unify . typeSymbol ] extends Option < infer A0 > | infer _ ? Option < A0 > : never
76
76
}
77
77
78
+ /**
79
+ * @since 2.0.0
80
+ */
81
+ export declare namespace Option {
82
+ /**
83
+ * @since 2.0.0
84
+ * @category type-level
85
+ */
86
+ export type Value < T extends Option < any > > = [ T ] extends [ Option < infer _A > ] ? _A : never
87
+ }
88
+
78
89
/**
79
90
* @category models
80
91
* @since 2.0.0
You can’t perform that action at this time.
0 commit comments