Type Alias Equal<A, B, $O> Equal : [ A , B ] extends [ B , A ] ? BothNever < A , B , $ResolveBranch < $O , [ $Then ] > , $ResolveBranch < $O , [ $Else ] > , BothAny < A , B , $ResolveBranch < $O , [ $Then ] > , $ResolveBranch < $O , [ $Else ] > , $Same < A , B , { $else : [ IsObject < A > , IsObject < B > ] extends [ true , true ] ? $Same < Properties < A > , Properties < B > , { $else : $ResolveBranch < $O , [ $Else ] > ; $then : [ A , B ] extends [ ( ... args : ...
) => ...
, ( ... args : ...
) => ...
] ? IsEqual < P1 , P2 , $ResolveBranch < (...)
, (...)
> , $ResolveBranch < (...)
, (...)
> , > : $ResolveBranch < $O , [ (...)
] > ; } , > : [ A , B ] extends [ B , A ] ? $ResolveBranch < $O , [ $Then ] > : $ResolveBranch < $O , [ $Else ] > ; $then : $ResolveBranch < $O , [ $Then ] > ; } , > , > , > : $ResolveBranch < $O , [ $Else ] , A >
M M N E P V F C I C P M F P C P T T A A A T R
🎠predicate
Validate
A
andB
are "equal".Note that intersection type checks only works at first level. It cannot be check recursively, or else will run into infinite recursion if the type includes recursive types.