type A = {
a: number;
b: string;
};
type B = {
b: number;
c: boolean;
};
I have test the extends relationship, It shows true:
type Expected1 = Pick<A & B, keyof A | keyof B> extends A & B ? true : false; // true
type Expected2 = A & B extends Pick<A & B, keyof A | keyof B> ? true : false; // true
But got falsy with Equal
type:
type Equal<X, Y> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? true : false
type Expected3 = Equal<A & B, Pick<A & B, keyof A | keyof B>> // false
Can anyone tell me why?