Open rimo030 opened 6 months ago
처음에는 아래와 같이 작성했었는데, 간결한 솔루션이 있어서 놀랐다.
서로에게 존재하는 프로퍼티를 삭제한 후 인터섹션 합니다.
type Diff<O, O1> = Omit<{
[K in keyof O as K extends keyof O1 ? never : K] : O[K];
} & {
[K in keyof O1 as K extends keyof O ? never : K] : O1[K];
}, never>
따라서 아래와 같습니다.
type Diff<O, O1> = Omit<Omit<O, keyof O1> & Omit<O1, keyof O>, never>
따라서 아래와 같습니다.
type Diff<O, O1> = Omit<O & O1, keyof (O | O1)>