Implement the `Diff<O, O1>` type, that returns an object with the difference between two objects. Master union and intersection types in TypeScript in this medium-level challenge on TypeScriptPro.
In this medium-level challenge, you'll implement the Diff<O, O1> type, that returns an object with the difference between two objects.
Get an Object that is the difference between O & O1
Change the following code to make the test cases pass (no type check errors).
// Video Solution: https://youtube.com/watch?v=vur6pK1VIDk
/* _____________ Your Code Here _____________ */
type Diff<O, O1> = any
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '../helpers'
type Foo = {
name: string
age: string
}
type Bar = {
name: string
age: string
gender: number
}
type Coo = {
name: string
gender: number
}
type cases = [
Expect<Equal<Diff<Foo, Bar>, { gender: number }>>,
Expect<Equal<Diff<Bar, Foo>, { gender: number }>>,
Expect<Equal<Diff<Foo, Coo>, { age: string; gender: number }>>,
Expect<Equal<Diff<Coo, Foo>, {Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
[object Object]How it works:
keyof (O | O1) creates a union of all keys that are in BOTH objects O and O1O & O1 creates an intersection of the objects giving us a new object with all keys that are in at least ONE objectOmit to remove all keys that are in both objects (keyof (O | O1)) from the intersection of the objects (O & O1), giving us the difference between the two objects.This challenge helps you understand TypeScript's advanced type system and how to apply this concept in real-world scenarios.
This challenge is originally from here.