【类型挑战】元组转换为对象,难度⭐️
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
Dear,大家好,我是“前端小鑫同学”,😇长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
知识运用:
- 认识什么是as const,有什么作用;
- 如何得到数组类型中的元素类型;
- Typeof 类型运算符的到被引用变量或属性的类型;
题目分析:
题目地址:11-easy-tuple-to-object
如上图所示我们需要设计的类型工具需要满足将一个数组转为由其元素组成的key和value看着相同的对象类型。
题目解答:
测试用例:
测试用例还是挺简单的比较经过我们设计的类型工具处理后的结果后定义的内容是否一致,但当我们的元祖中元素存在对象类型时会抛出错误。
/* _____________ 测试用例 _____________ */ // 完整测试用例可见 type-challenges项目,点击题目链接可转到 import { Equal, Expect } from '@type-challenges/utils' const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const type cases = [ Expect<Equal<TupleToObject<typeof tuple>, { tesla: 'tesla'; 'model 3': 'model 3'; 'model X': 'model X'; 'model Y': 'model Y'}>>, ] // @ts-expect-error type error = TupleToObject<[[1, 2], {}]>
答案及解析:
- 通过typeof tuple处理后我们得到了由只读的tuple内容组成的一份类型数组,在这里我们需要通过T[number]来得到元素的类型。
- 同样通过in来映射匹配数组每一条元素,当然了value也是这里的key,是相同的。
- 当然作为对象的key是不可以使用对象,数组这些类型的,所以我们的T需要约束为string[]类型来满足条件。
/* _____________ 答案 _____________ */ type TupleToObject<T extends readonly string[]> = { [key in T[number]]: key; }
接下来的一题是:【类型挑战】第一个元素,难度⭐️
推荐:GFE前端团队,欢迎各位XD点赞,评论,关注~
欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)