【类型挑战】Exclude,难度⭐️

简介: 【类型挑战】Exclude,难度⭐️

知识运用:


  1. Exclude将从联合类型中排除特点的类型后输出剩余联合类型
  2. 条件类型运用
  3. 分布式条件类型运用


题目分析:


题目地址:43-easy-excludeimage.png

如上图所示我们需要设计一个与内置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>>>,
]


答案与解析:

  1. 我们需要从一组联合类型中得到排除后的类型,考虑到有条件的存在那我们就需要使用到Ts类型编程关于条件的处理(Conditional Types)
  1. 语法示例:SomeType extends OtherType ? TrueType : FalseType;
  2. 解释说明:当SomeType类型可以分配给OtherType时得到TrueType,反之得到FalseType,这里注意关键动词为分配,区别于原来条件的理解。
  1. 这道题运用到了条件类型中的分布式条件类型,使得可以支持联合类型,如文档示例,可以将我们传入的联合类型分别处理成对应的数组类型并联合后返回给我们
  1. type ToArray = Type extends any ? Type[] : never;
  2. type StrArrOrNumArr = ToArray<string | number>;
  1. 当我们的T中的联合类型可以分配个需要排除的类型U的情况下就直接返回never,表示永不可达,反之则返回类型。
/* _____________ 答案 _____________ */
type MyExclude<T, U> = T extends U ? never : T;


去演练场验证答案



目录
打赏
0
0
0
0
71
分享
相关文章
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
181 2
可观测性神器之 Micrometer
对于大部分开发人员来说可能用过普罗米修斯 Grafana 这样的监控系统,从未听说过 Micrometer 工具,这里就详细的来介绍下可观测性神器 Micrometer,让你在开发时使用它就和使用 SLFJ 日志系统一样简单易用,有效的提升系统的健壮性和可靠性。
678 6
中国公有云关系型数据库持续高增长,阿里云占比39%蝉联榜首
日前,全球领先的IT市场研究和咨询公司IDC发布《2023年上半年中国关系型数据库软件市场跟踪报告》,报告显示,在2023年上半年,阿里云整体市场份额(公有云+本地部署模式)位居第一,其中公有云市场份额高达39%,从2019年蝉联榜首至今。
ESCheck工具原理解析及增强实现(3)
完整demo3代码 如有一些边界情况也是在 catch err部分根据 message做一下过滤即可 比如下代码
实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现
实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现
226 0
实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现
浏览器_知识点精讲
CSS重点概念精讲 JS_基础知识点精讲 网络通信_知识点精讲 JS_手写实现 前端工程化_知识点精讲 前端框架_React知识点精讲 React实战精讲(React_TS/API) Web性能优化_知识点精讲 JS算法_知识点精讲
163 0
浏览器_知识点精讲
使用tinyxml的一些小窍门,插入时设置text
使用tinyxml的一些小窍门,插入时设置text
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等