【类型挑战】实现 Readonly,难度⭐️
2023-02-18 16:41:26 时间
Dear,大家好,我是“前端小鑫同学”,?长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
知识运用:
- 认识什么是readonly,和常量的区别是什么?
- Indexed Access Types:索引访问类型;
- Keyof 类型运算符;
- Mapped Types 映射类型; 题目分析: 题目地址:7-easy-readonly
如图所示我们需要设计一个通用类型工具MyReadonly接收传入的Todo接口并遍历每一条属性去设置为只能读取不能编辑,并返回这样的类型结构,功能同Readonly。 题目解答: 测试用例:
- 测试用例很简单,就是比较我们实现的类型工具和内置Readonly类型工具的到的结果是否一致;
- 当然我们也可以声明一个变量并约束类型为我们实现的类型工具返回的类型,重新赋值后看是否成功。
/* _____________ 测试用例 _____________ */
// 完整测试用例可见 type-challenges项目,点击题目链接可转到
import { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<MyReadonly<Todo1>, Readonly<Todo1>>>,
]
interface Todo1 {
title: string
description: string
completed: boolean
meta: {
author: string
}
}
复制代码
答案及解析:
目标是对传入的接口的每一条属性增加readonly属性
- 返回的结果始终是一个对象来表示
- 实现的格式:readonly key:value,key指的是Todo的属性,value指的是Todo的属性对应的类型
- 如何得到value:通过索引类型访问T[key]的形式获取
- 如何遍历接口类型的每一条属性:通过映射类型关键词in,形式为[key in 类型字符串集合]
- 如何得到接口每一条属性组成的类型字符串集合:使用keyof来得到
/* _____________ 答案 _____________ */
type MyReadonly<T> = {
readonly [key in keyof T]: T[key]
}
复制代码
接下来的一题是:【类型挑战】元组转换为对象,难度⭐️
相关文章
- 详谈R语言构建地理投影系统绘制高端地图
- ggplot2优雅的绘制配对连线云雨图
- 什么?Nessus你又双叒叕安装失败了吗?
- “用友畅捷通T+”勒索攻击爆发给我们的启示,与其亡羊补牢不如未雨绸缪
- 图解|勒索软件防范指南
- windows信息收集工具 -- winlog
- 【共读】《金融网络安全》Hands-On Cybersecurity for Finance 读书笔记
- where field in(...) 是怎么执行的?
- 【实验笔记】搭建FTP服务器并登录,抓包验证
- 一款图像化红队作战工具Viper(炫彩蛇)
- “数据分析”岗位的数据分析项目
- 当,以“三国”的方式解锁网络安全攻防战
- 中国高校数据分析数据分析项目
- 扫雷小游戏
- 汽车产品聚类分析
- 2021中国大学排名分析数据分析项目
- 2022-12-20:二狗买了一些小兵玩具,和大胖一起玩, 一共有n个小兵,这n个小兵拍成一列, 第i个小兵战斗力为hi,然后他们两个开始对小兵进行排列, 一共
- 基于flask和网页端部署yolo自训练模型
- 小米手机销售数据分析和爬虫
- java原生阻塞队列详解索引