【类型挑战】元组转换为对象,难度⭐️
2023-02-18 16:41:26 时间
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;
}
复制代码
接下来的一题是:【类型挑战】第一个元素,难度⭐️
相关文章
- ☕【Java深层系列】「技术盲区」让我们一起去挑战一下如何读取一个较大或者超大的文件数据!
- 【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
- ☕【Java深层系列】「技术盲区」让我们一起完全吃透针对于时间和日期相关的API指南
- 🏆【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究
- ☕【Java技术指南】「序列化系列」深入挖掘FST快速序列化压缩内存的利器的特性和原理
- 【Java技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路
- ☕【Java技术指南】「技术盲区」看看线程以及线程池的异常处理机制都有哪些?
- ☕【Java技术指南】「编译器专题」深入分析探究“静态编译器”(JAVA\IDEA\ECJ编译器)是否可以实现代码优化?
- ☕【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了!
- ☕【Java技术指南】「并发编程专题」Fork/Join框架基本使用和原理探究(原理及源码篇)
- Java技术开发专题系列之【Guava RateLimiter】针对于限流器的入门到精通(针对于源码分析介绍)
- ☕【Java技术指南】「并发编程专题」针对于Guava RateLimiter限流器的入门到精通(含实战开发技巧)
- ☕【JVM技术指南】「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
- ☕【JVM技术指南】「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
- ☕【Java技术指南】「并发编程专题」CompletionService框架基本使用和原理探究(基础篇)
- ☕【Java技术指南】「并发编程专题」Fork/Join框架基本使用和原理探究(基础篇)
- ☕【Java技术指南】「难点-核心-遗漏」Java线程状态流转及生命周期的技术指南(知识点串烧)!
- 挂钩 NtCreateThreadEx 导致 0xC00000F2 问题
- 调用 NtUserXXX 引发系统 BSOD 的问题分析
- 在 64 位 Windows 操作系统中的内核特权级别提升