if A equals B, return true, else return false.
Signature:
export type IsEquals<A, B> = (<T>() => T extends A ? 1 : 2) extends <
T,
>() => T extends B ? 1 : 2
? true
: false // Expect: false
type Foo = IsEquals<1, number>
// Expect: true
type Bar = IsEquals<1, 1>
// notice: The intersection type could not be matched
// IsEquals<{a: 1} & { b: 2 }, { a:1, b: 2 }> // false
// IsEquals<Simplify<{a: 1} & { b: 2 }>, { a:1, b: 2 }> // true