✍ 공부/TypeScript
[type-challenges] Merge
Po_tta_tt0
2023. 6. 27. 08:22
반응형
문제
두개의 타입을 새로운 타입으로 병합하세요.
두번째 타입이 첫번째 타입을 덮어씁니다.
설명
/* _____________ Your Code Here _____________ */
type Merge<F, S> = {[P in keyof F | keyof S]: P extends keyof S ? S[P] :P extends keyof F ? F[P]:never}
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
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
}>>,
]
접근방법
- 객체로 만들어야 하니까 {} 내부에서 작성하면 되겠다!
- 두 객체의 key를 다 돌아야 하니까 배열 내부의 Union 타입을 이용해 돌면 되겠다(P == keyof F + keyof S)
- 두번째 요소인 S가 덮어써야 하기 때문에, S먼저 살펴본다
P가 S 내부에 들어있는 key일 경우 value로S[P]
를 뽑고
P가 F 내부에 들어있는 key일 경우 value로F[P]
를 뽑으면 되겠지!?!
잘 작동!🥳
반응형