#599Medium

Merge

Implement the `Merge<F, S>` type, that merges two types into a new type. Master mapped types in TypeScript in this medium-level challenge on TypeScriptPro.

In this medium-level challenge, you'll use Merge<F, S> to merge two types into a new type. The keys of the second type overrides keys of the first type.

Challenge Instructions: Merge

Medium

Merge two types into a new type. Keys of the second type overrides keys of the first type.

For example

type foo = {
name: string
age: string
}
type coo = {
age: number
sex: string
}
 
type Result = Merge<foo, coo> // expected to be {name: string, age: number, sex: string}

Change the following code to make the test cases pass (no type check errors).

ChallengeSolution
// Video Solution: https://youtube.com/watch?v=iPxcH_8gAOc

/* _____________ Your Code Here _____________ */

type Merge<F, S> = any

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '../helpers'

type Foo = {
  a: number
  b: string
}
type Bar = {
  b: number
  c: boolean
}

type cases = [
  Expect<
    Equal<
      Merge<Foo, Bar>,
      {
        a: number
        b: number
        c: boolean
      }
    >
  >,
]

Pro Challenge

Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.

One-time payment. Lifetime access.

Video Walkthrough

Detailed Explanation

type Merge<F, S> = {
  [Key in keyof F | keyof S]: Key extends keyof S
    ? S[Key]
    : Key extends keyof F
      ? F[Key]
      : never
}

How it works:

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.

Share this challenge

Learn the Concepts