【类型挑战】Exclude,难度⭐️
2023-02-18 16:41:25 时间
Dear,大家好,我是“前端小鑫同学”,?长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
知识运用:
- Exclude将从联合类型中排除特点的类型后输出剩余联合类型
- 条件类型运用
- 分布式条件类型运用题目分析: 题目地址:43-easy-exclude
如上图所示我们需要设计一个与内置Exclude功能一致的类型工具,从已知的联合类型中排除指定类型后将剩余类型返回。
题目解答: 测试用例:
/* _____________ 测试用例 _____________ */
import { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<MyExclude<"a" | "b" | "c", "a">, Exclude<"a" | "b" | "c", "a">>>,
Expect<Equal<MyExclude<"a" | "b" | "c", "a" | "b">, Exclude<"a" | "b" | "c", "a" | "b">>>,
Expect<Equal<MyExclude<string | number | (() => void), Function>, Exclude<string | number | (() => void), Function>>>,
]
复制代码
答案与解析:
- 我们需要从一组联合类型中得到排除后的类型,考虑到有条件的存在那我们就需要使用到Ts类型编程关于条件的处理(Conditional Types)
- 语法示例:SomeType extends OtherType ? TrueType : FalseType;
- 解释说明:当SomeType类型可以分配给OtherType时得到TrueType,反之得到FalseType,这里注意关键动词为分配,区别于原来条件的理解。
- 这道题运用到了条件类型中的分布式条件类型,使得可以支持联合类型,如文档示例,可以将我们传入的联合类型分别处理成对应的数组类型并联合后返回给我们
- type ToArray = Type extends any ? Type[] : never;
- type StrArrOrNumArr = ToArray<string | number>;
- 当我们的T中的联合类型可以分配个需要排除的类型U的情况下就直接返回never,表示永不可达,反之则返回类型。
/* _____________ 答案 _____________ */
type MyExclude<T, U> = T extends U ? never : T;
复制代码
接下来的一题是:【类型挑战】Awaited,难度⭐️
相关文章
- 轻松搭建CAS 5.x系列(4)-Java客户端程序接入CAS单点登录,Hello World版
- 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