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

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

知识运用:


  1. 认识什么parameterstype和其作用;


题目分析:


题目地址:3312-easy-parametersimage.pngParameters的作用就是获取一个函数的参数类型组成的元祖,接下来我们通过这道题来详细看一下。


题目解答:


测试用例:

本次的测试案例可以看出,我们需要考虑输入类型为内置类型,字面量类型和未传入类型的情况,测试用例同样使用到了typeof来讲js世界申明的变量转换为类型世界的类型。

/* _____________ 测试用例 _____________ */
import { Equal, Expect, ExpectFalse, NotEqual } from '@type-challenges/utils'
const foo = (arg1: string, arg2: number): void => {}
const bar = (arg1: boolean, arg2: {a: 'A'}): void => {}
const baz = (): void => {}
type cases = [
  Expect<Equal<MyParameters<typeof foo>, [string, number]>>,
  Expect<Equal<MyParameters<typeof bar>, [boolean, {a: 'A'}]>>,
  Expect<Equal<MyParameters<typeof baz>, []>>,
]
复制代码


答案及解析:

  1. 答案默认给定了我们的左侧部分,并已通过泛型约束了传入类型为函数类型,函数类型的参数支持任意类型,我们负责将这个参数类型提取后返回。
  2. 提到提取类型我们就要联想到infer关键字,在使用infer关键字提取类型时往往搭配条件类型来做。
  3. 所以说当我们的T符合一个传入的函数类型时我们就用infer来申明一个P并且返回,反之返回nerver,最终解答这道题。
/* _____________ 你的代码 _____________ */
type MyParameters<T extends (...args: any[]) => any> = T extends (...args: infer P) => any ? P : never;
复制代码


去演练场验证答案



相关文章
快速生成软著申请时所需的60页代码文档的免费工具
本篇文章主要讲解,制作软著代码文档的高效方法,当然不可能手动一个个复制了,这显然太笨拙,他浪费时间了。这里我给大家介绍一个更快的方式。
8864 0
五分钟带你玩转sonar(五)教你使用SonarLint插件
五分钟带你玩转sonar(五)教你使用SonarLint插件
5214 0
五分钟带你玩转sonar(五)教你使用SonarLint插件
|
9月前
|
前端开发 算法 API
鸿蒙特效教程08-幸运大转盘抽奖
本教程将带领大家从零开始,一步步实现一个完整的转盘抽奖效果,包括界面布局、Canvas绘制、动画效果和抽奖逻辑等。
292 0
鸿蒙特效教程08-幸运大转盘抽奖
|
9月前
|
人工智能 供应链 监控
千星计划如何解决引流裂变留存复购的难题?
千星计划通过零成本裂变引擎、指数级收益设计、AI风控及私域闭环,解决引流、裂变、留存和复购难题。其核心策略包括3人裂变层级叠加、强制任务机制、清流算法和视频号带货绑定等,大幅降低获客成本(从50元降至10元),提升留存率(85%以上)和复购频次(2.1次/月)。实际案例显示,采用该模型的企业30天内用户LTV从89元提升至217元。
|
编解码 前端开发 JavaScript
前端界的黑科技:掌握这些技术,让你的网站秒变未来感十足!
【10月更文挑战第31天】前端技术日新月异,黑科技层出不穷,让网页更加美观、交互更加丰富。本文通过响应式布局与媒体查询、前端框架与组件化开发等案例,展示这些技术如何让网站充满未来感。响应式布局使网站适应不同设备,前端框架如React、Vue则提高开发效率和代码质量。
225 3
|
11月前
|
前端开发 Java 开发者
【springboot】中使用--WebMvcConfigurer
通过实现 `WebMvcConfigurer` 接口,Spring Boot 开发者可以灵活地自定义和扩展 Spring MVC 的配置。无论是视图解析、拦截器、跨域请求处理,还是静态资源和消息转换器配置,`WebMvcConfigurer` 都提供了一致的接口来实现这些功能。掌握这些配置方法,可以使开发者在 Spring Boot 项目中更加游刃有余地进行各种定制化需求的开发。
535 14
|
SQL 关系型数据库 MySQL
京东面试:什么情况下 mysql RR不能解决幻读? RR隔离mysql如何实现?
老架构师尼恩在其读者交流群中分享了关于MySQL事务隔离级别的深入解析,特别针对RR级隔离如何解决幻读问题进行了详细讨论。文章不仅解释了ACID中的隔离性概念,还列举了四种事务隔离级别(未提交读、提交读、可重复读、串行读)的特点及应用场景。尼恩通过具体的例子和图表,清晰地展示了不同隔离级别下的并发事务问题(脏读、不可重复读、幻读)及其解决方案,特别是RR级隔离下的MVCC机制如何通过快照读和当前读来防止幻读。此外,尼恩还提供了相关面试题的解答技巧和参考资料,帮助读者更好地准备技术面试。更多详细内容和实战案例可在《尼恩Java面试宝典》中找到。
|
机器学习/深度学习 人工智能 物联网
智能家居技术的未来:从自动化到智能化的跨越
本文将探讨智能家居技术的发展趋势,从早期的自动化设备到现代的智能系统,分析其背后的技术驱动因素和市场动态。文章将详细讨论物联网(IoT)、人工智能(AI)、机器学习等技术如何推动智能家居的发展,并展望智能家居未来的发展方向。
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
3444 6
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
354 56