【类型挑战】实现 Omit,难度⭐️⭐️ |
您所在的位置:网站首页 › omit前端 › 【类型挑战】实现 Omit,难度⭐️⭐️ |
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第15天,点击查看活动详情。 Dear,大家好,我是“前端小鑫同学”,😇长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~ 知识运用: 什么是Omit? 如何遍历联合类型? 使用内置的Exclude。 题目分析:题目地址:3-medium-omit
我们的测试用例需要满足按需省略掉对象中存在的属性,当需要省略的属性不存在时将会抛出错误。 /* _____________ 测试用例 _____________ */ import { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect, Expect ] // @ts-expect-error type error = MyOmit interface Todo { title: string description: string completed: boolean } interface Expected1 { title: string completed: boolean } interface Expected2 { title: string } 答案及解析: 观察测试用例,我们传入的K有两个特点,一个是K必须存在T中,另一个是需要使用keyof来得到T中属性组成的联合类型。 接着我们需要使用内置的Exclude来从T的属性组成的联合类型中排除K的存在。 通过in来遍历剩余的属性,并通过索引类型访问来读取每个U的值,最后组成一个U:T[U]。 /* _____________ 你的代码 _____________ */ type MyOmit = { [U in Exclude]: T[U] }去演练场验证答案 接下来的一题是:【类型挑战】Readonly 2,难度⭐️⭐️ 欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |