题目地址:3-medium-omit
如上图所示,我们需要实现的通用类型工具的要求需要满足可以将传入的对象在忽略掉指定key的字段后再返回输出。
我们的测试用例需要满足按需省略掉对象中存在的属性,当需要省略的属性不存在时将会抛出错误。
/* _____________ 测试用例 _____________ */
import { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<Expected1, MyOmit<Todo, 'description'>>>,
Expect<Equal<Expected2, MyOmit<Todo, 'description' | 'completed'>>>
]
// @ts-expect-error
type error = MyOmit<Todo, 'description' | 'invalid'>
interface Todo {
title: string
description: string
completed: boolean
}
interface Expected1 {
title: string
completed: boolean
}
interface Expected2 {
title: string
}
复制代码
/* _____________ 你的代码 _____________ */
type MyOmit<T, K extends keyof T> = {
[U in Exclude<keyof T, K>]: T[U]
}
复制代码
接下来的一题是:【类型挑战】Readonly 2,难度⭐️⭐️