【类型挑战】Readonly 2,难度⭐️⭐️
2023-02-18 16:41:24 时间
Dear,大家好,我是“前端小鑫同学”,?长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
知识运用:
- 认识和使用Omit。
- 认识和使用Pick。
- 认识和使用。
题目分析:
题目地址:8-medium-readonly-2
如上图所示,这道题目涉及的内容较多,难度对于刚学类型编程不就的伙伴来说挺难的,我们先参考社区的答案来解析,后续巩固。
题目解答:
测试用例:
本次测试用例重点关注前两个即可,一个是需要全部处理为Readonly,而另一个需要对指定的KEY处理为Readonly。
/* _____________ 测试用例 _____________ */
import type { Alike, Expect } from '@type-challenges/utils'
type cases = [
Expect<Alike<MyReadonly2<Todo1>, Readonly<Todo1>>>,
Expect<Alike<MyReadonly2<Todo1, 'title' | 'description'>, Expected>>,
Expect<Alike<MyReadonly2<Todo2, 'title' | 'description'>, Expected>>,
]
interface Todo1 {
title: string
description?: string
completed: boolean
}
interface Todo2 {
readonly title: string
description?: string
completed: boolean
}
interface Expected {
readonly title: string
readonly description?: string
completed: boolean
}
答案及解析:
假如我们传入了K,那么需要处理为Readonly的对象我们可以使用Pick选出这几个key组成的对象类型。
再借用内置的Readonly工具将这个对象类型直接处理。
那么为指定到K的属性不就丢了吗?我们可以使用Omit来排除掉已传入K的两个后得到剩余的一个K。
在通过&将两个对象类型链接起来得到一个完整的满足2,3用例的答案。
右边的说完了,再看下左边,我们通常的K就直接通过extends keyof T来约束必须在T中存在了。这个K extends keyof T = keyof T是什么意思呢?哪位伙伴说一下?
/* _____________ 答案 _____________ */
type MyReadonly2<T, K extends keyof T = keyof T> = Omit<T, K> & Readonly<Pick<T, K>>;
接下来的一题是:【类型挑战】深度 Readonly,难度⭐️⭐️
相关文章
- Java 调式、热部署、JVM 背后的支持者 Java Agent
- 深入理解Java ClassLoader及在 JavaAgent 中的应用
- Java探针技术-JVM的动态agent机制:在main函数启动之后运行agent
- Java探针技术-Instrumentation与ClassFileTransformer--字节码转换工具
- Java探针技术-instrutment中retransformClasses和redefineClasses
- Java探针技术-动态agent机制:在main函数启动之后运行agent
- Java探针技术-动态重定义Class
- Java探针技术-retransformclasses的介绍
- Java探针技术-如何从asm代码中正确使用Instrumentation.retransformClasses()
- Java-技术专区-探针技术之instrutment中retransformClasses和redefineClasses
- Jaeger-Opentracing的Java-client完整分布式追踪链
- Jaeger-Opentracing的Java-client
- Jaeger-2.客户端使用 (Java版本)
- Java-技术专区-javaAgent(插桩,attach)
- Java-技术专区-设计模式-reactor模式
- Java-技术专区-如何监控Java线程池的状态
- 软硬件融合技术内幕 进阶篇 (2) —— 共产主义的幽灵
- 《Java 数据结构与算法》第1章:链表
- hive 分区表添加字段后,字段结果为null
- 《Java 算法与数据结构》第2章:数组