【类型挑战】元组转换为对象,难度⭐️

简介: 【类型挑战】元组转换为对象,难度⭐️

知识运用:


  1. 认识什么是as const,有什么作用;
  2. 如何得到数组类型中的元素类型
  3. Typeof 类型运算符的到被引用变量或属性的类型;


题目分析:


题目地址:11-easy-tuple-to-objectimage.png如上图所示我们需要设计的类型工具需要满足将一个数组转为由其元素组成的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], {}]>
复制代码


答案及解析:

  1. 通过typeof tuple处理后我们得到了由只读的tuple内容组成的一份类型数组,在这里我们需要通过T[number]来得到元素的类型。
  2. 同样通过in来映射匹配数组每一条元素,当然了value也是这里的key,是相同的。
  3. 当然作为对象的key是不可以使用对象,数组这些类型的,所以我们的T需要约束为string[]类型来满足条件。
/* _____________ 答案 _____________ */
type TupleToObject<T extends readonly string[]> = {
  [key in T[number]]: key;
}
复制代码


在演练场验证答案



相关文章
|
机器学习/深度学习 设计模式 算法
类型体系与基本数据类型(第三节)
类型体系与基本数据类型(第三节)
55 0
|
6月前
|
存储 安全 索引
探究Python中的元组:不可变性与多重用途
探究Python中的元组:不可变性与多重用途
|
7月前
|
存储 传感器 机器学习/深度学习
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
129 0
|
存储 机器学习/深度学习 并行计算
类型体系与基本数据类型(第二节)
类型体系与基本数据类型(第二节)
52 0
|
安全 Go
Go语言字典无限进化,实现可存任意类型值!
Go语言字典无限进化,实现可存任意类型值!
72 0
|
存储 NoSQL API
【Redi设计与实现】第六章:整数集合
【Redi设计与实现】第六章:整数集合
【Redi设计与实现】第六章:整数集合
|
机器学习/深度学习 搜索推荐 算法
编程艺术 - 第二章 、俩个字符串是否包含问题以及扩展
编程艺术 - 第二章 、俩个字符串是否包含问题以及扩展
71 0
|
前端开发
前端学习案例16-隐式类型转换-16 原
前端学习案例16-隐式类型转换-16 原
78 0
前端学习案例16-隐式类型转换-16 原
|
前端开发
前端学习案例15-隐式类型转换-15 原
前端学习案例15-隐式类型转换-15 原
65 0
前端学习案例15-隐式类型转换-15 原
|
前端开发
前端学习案例4-隐式类型转换-4 原
前端学习案例4-隐式类型转换-4 原
60 0
前端学习案例4-隐式类型转换-4 原