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.
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).
// 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
}
>
>,
]
Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.
One-time payment. Lifetime access.
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:
F and S ([Key in keyof F | keyof S])S, if it is, we return the value of S[Key], otherwise we check if the key is in F, if it is, we return the value of F[Key], otherwise we return neverThis 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.