Type-challenges题目(第三部分)

3060 Unshift

用扩展运算符即可。

type Unshift<T extends any[], U> = [U,...T]

3312 Parameters

使用infer 推导即可。

type MyParameters<T extends (...args: any[]) => any> = T extends (...args: infer U) => any?U:never;

2 获取函数返回类型

就是extends 一个函数模板,然后使用infer U即可。

type MyReturnType<T extends (...args :any[]) => any > = T extends (...args :any[]) => infer U?U:never;

3 实现 Omit

type MyOmit<T, K> = {[P in keyof T as P extends K ? never : P]: T[P]
}// or
type MyOmit<T, K> = Pick<T, Exclude<keyof T, K>>

8 Readonly 2

type MyReadonly2<T, K extends keyof T = keyof T> = {readonly [P in keyof T] : T[P]
} & {[P in keyof T as Exclude<P, K>]: T[P]
}
// = 为泛型参数设置默认值
// 1. K extends keyof T 不成立时,赋值默认值 keyof T 给第二泛型参数
// 2. 先计算出一个只存在 readonly 字段的对象
// 3. 再通过内置工具类型 Omit,计算出不包含 K 的对象
// 4. 再使用 & 计算出两个类型的交叉类型()
type MyReadonly2<T, K extends keyof T = keyof T> = {+readonly [P in K]: T[P]
} & Omit<T, K>

9 深度 Readonly

使用递归即可。判当前是对象还是某一个属性。

type DeepReadonly<T> = {readonly [P in keyof T]: keyof T[P] extends never ? T[P] : DeepReadonly<T[P]>
}

Type-challenges题目(第三部分)相关推荐

  1. 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别

    package com.dym.juc;//资源类 class Ticket {private int number =30;public synchronized void saleTicket() ...

  2. 笔试面试题目:三点共线的判断

    看腻了认知鸡汤,你一无所获,味同嚼蜡?看累了万字长文,你收藏了事,心事重重? 那么,我们一起,上点算法小菜,斟点程序小酒,品味一下短小的趣味算法和程序,别有一番风味. 面试题目 在本文中,我们要讨论的 ...

  3. PMP新考纲 敏捷题目 (三)

    61.传统管理的项目使用Scrum来开发项目可交付成果.敏捷发布规划要求将最近完成的MVP部署到生产中.然而,质量保证(QA)部门拒绝了MVP,声称部门的政策和程序没有处理中期可交付成果的实施.将问题 ...

  4. C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法

    文章目录 三步翻转法 杨氏矩阵 辗转相除法 三步翻转法 三步翻转法是C语言中用来求旋转字符串的一种进阶方法,我们以具体例题对其进行介绍. 例:求一个字符串左旋n个字符后得到的新字符串 普通方法实现 我 ...

  5. 京东实习生招聘题目解析(三)

    有段时间没写了,但是之前把JD剩余的题目基本还是过了一次,题目总体都比较简单,本次的解析选择了其中的5个题目,由于比较简单,就分析的简略些,留一些思考的空间.因为很久没有更新,最近还会和大家讨论一个动 ...

  6. C语言编程题目(三)

    题目:给数据文件IN.DAT中写入300个4位随机数.调用函数readDat()把这些随机数存入数组a中.编写函数jsValue(),其功能是求出千位数减去百位数减去个位数大于0的数的个数cnt,再求 ...

  7. NYOJ 题目68 三点顺序

    三点顺序 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针 ...

  8. 牛客网-数据结构笔试题目(三)-博弈论圆圈游戏(Circle Game)(附源码)

    题意 从前有两个人,一个叫Utkarsh,另外一个叫Ashish. 这两个人在一个2D的棋盘上玩移动棋子的游戏,一开始从原点出发,Ashish先手.每次可以把棋子向上或者是向右移动k个单位的距离.两人 ...

  9. 应用MATLAB求解线性代数题目(三)——n维向量

    目录 判定线性相关并给出极大无关组 向量空间--维数 size()函数 判定线性相关并给出极大无关组 MATLAB中没有直接判定线性相关并给出极大无关组. 根据线性代数的知识,先求出秩,根据秩的大小与 ...

最新文章

  1. FPGA在人工智能时代的独特优势
  2. ubuntu_subversion_mantis_testlink使用ldap认证
  3. DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
  4. python version 3.4 required_Python version 3.3 required, which was not found in the registry
  5. java类加载器_JAVA类加载器
  6. 【零基础入门数据挖掘】-特征工程
  7. RxSwift之UI控件UIActivityIndicatorView与UIApplication扩展的使用
  8. 四则运算系统:分析和设计
  9. 开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
  10. 4.11_facade_结构型模式:外观模式
  11. 高斯投影坐标计算例题_利用MAPGIS软件进行投影变换
  12. windows 实验报告
  13. 【读书笔记】C#高级编程 第九章 字符串和正则表达式
  14. [UEFI启动教程]移动硬盘安装U盘装机助理(双模式启动)
  15. AS/400数据同步专家
  16. 三维扫描+逆向建模+3D打印复刻工艺品
  17. 计算机如何重新连接打印机,打印机脱机怎么处理 打印机重新连接方法教程
  18. Storm示例剖析-fastWordCount
  19. 通达信 服务器 修改,通达信金融交易终端(开心果交易版)V2020版,修改导航菜单...
  20. c语言函数参数从右往左,C语言函数入参压栈顺序为什么是从右向左?

热门文章

  1. 如何删除php空间,wps云文档空间满了怎么清除
  2. 全面讲解Web3.0域名的应用场景-赛道情况-未来挑战
  3. Android-混淆学习
  4. IOS小组件(4-2):创建可配置小组件(动态修改配置数据)
  5. 蔡司镜头的魅力:vivo X60 Pro评测体验
  6. 如何制作透明的树Shader和一个玻璃Shader
  7. python123m与n的数学运算_python入门基础,全网最详细教程
  8. 安诺伦代理iduron品牌——为学术研究和制药行业提供独特的糖胺聚糖产品系列
  9. 一站式登录授权系统(单点登录+授权管理)
  10. 小傻蛋来做一周学习总结吧~~~