StudyPlayground / TypeScript-Exercise-Challenges

Typescript exercise & challenges
2 stars 0 forks source link

Type Challenges 599-Merge #52

Open kscory opened 5 months ago

kscory commented 5 months ago

답안을 작성해주세요.

bananana0118 commented 4 months ago
type Merge<F, S> = {[key in keyof F | keyof S]: key extends keyof S? 
  S[key] :
  key extends keyof F?
  F[key]:
  never;
  } 

첫번째 : key extends keyof S? 로 타입을 좁혔을 시 false일 경우에 key를 찾지 못한다. 그래서 extends keyof F? 를 한번더해서 key를 정의해줘야 한다.

kscory commented 4 months ago
type Merge<F, S> = {
    [K in keyof F | keyof S]: K extends keyof S ? S[K] : (F & S)[K]
}

아래처럼 F 를 먼저 판단하면 왜 안될까요... 이것때문에 삽질했네요 ㅜ

type Merge<F, S> = {
    [K in keyof F | keyof S]: K extends keyof F ? F[K] : (F & S)[K]
}
kscory commented 4 months ago
type Merge<F, S> = {
    [K in keyof F | keyof S]: K extends keyof S ? S[K] : (F & S)[K]
}

아래처럼 F 를 먼저 판단하면 왜 안될까요... 이것때문에 삽질했네요 ㅜ

type Merge<F, S> = {
    [K in keyof F | keyof S]: K extends keyof F ? F[K] : (F & S)[K]
}

아... 뒤에 나온게 앞을 덮어써야 하는군요

wogha95 commented 4 months ago
type Merge<F, S> = {
  [key in keyof F | keyof S]: key extends keyof S ? S[key] : key extends keyof F ? F[key] : never;
}