@@ -14,7 +14,8 @@ export type IfNever<T, A, B> = [T] extends [never] ? A : B;
14
14
export type IfAny < T , A , B > = 0 extends ( 1 & T ) ? A : B ;
15
15
export type IfUnknown < T , A , B > = [ unknown ] extends [ T ] ? IfAny < T , B , A > : B ;
16
16
17
- export type StrictExtends < A , B > = [ A ] extends [ B ] ? true : false ;
17
+ export type IfStrictExtends < A , B , ThenType , ElseType > = [ A ] extends [ B ] ? ThenType : ElseType ;
18
+ export type StrictExtends < A , B > = IfStrictExtends < A , B , true , false > ;
18
19
export type BidirectionalStrictExtends < A , B > = And < [ StrictExtends < A , B > , StrictExtends < B , A > ] > ;
19
20
20
21
export type IfNotExtendsCoalesce < T , ShouldExtend , Fallback > =
@@ -70,12 +71,6 @@ export type StrictEqual<A, B> = IfStrictEqual<A, B, true, false>;
70
71
71
72
/// -------------------------------------------------------------------------------------
72
73
73
- export type IfIdenticalInternalTSRepresentation < A , B , ThenType , ElseType > =
74
- ( < T > ( ) => [ T ] extends [ A ] ? 1 : 2 ) extends
75
- ( < T > ( ) => [ T ] extends [ B ] ? 1 : 2 ) ? ThenType : ElseType ;
76
-
77
- /// -------------------------------------------------------------------------------------
78
-
79
74
export type ReplaceAllTypeOccurrences < T , OldType , NewType > =
80
75
IfStrictEqual < T , OldType , NewType ,
81
76
IfAny < T , T ,
0 commit comments