Sunny-117 / js-challenges

✨✨✨ Challenge your JavaScript programming limits step by step
https://juejin.cn/column/7244788137410560055
2k stars 236 forks source link

Omit #429

Open linjunc opened 1 year ago

linjunc commented 1 year ago

实现 TS 中的 Omit 方法

interface Todo {
  title: string
  description: string
  completed: boolean
}

type MyOmit<T, K extends keyof T> = {
  [R in keyof T as R extends K ? never: R ]: T[R]
}

type TodoPreview = MyOmit<Todo, 'description' | 'title'>
Aurora-GSW commented 6 months ago
type MyPick<T, K extends keyof T> = {
    [p in K]:T[p]
}
//实现1
type MyOmit<T, K extends keyof any> = MyPick<T,Exclude<keyof T,K>>

//实现2
type MyOmit<T, K extends keyof any> = {
    [p in Exclude<keyof T,K>]:T[p]
}