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. android资源加载失败,Unity2017,打成安卓包之后加载资源失败
  2. 在.net中运用HTMLParser解析网页的原理和方法
  3. mysql触发器执行失败_mysql-Mysql数据库触发器执行不成功
  4. git的smart Checkout跟force checkout的区别
  5. 人工智能发展及其伦理问题思考
  6. 利用交换机排查网络故障-检测数据流量法
  7. IEEE论文参考文献格式(bib)
  8. 1.5时钟控制的触发器(钟控JK、钟控T触发器)
  9. 关于win10无法打开.msi文件的解决方法
  10. 码力十足学量化|macd 指标详解
  11. android x86酷狗音乐,酷狗音乐怀旧版
  12. DockerHub上最受欢迎的151个官方镜像,相传掌握第17个可以主宰宇宙!
  13. 【Ceph】Ceph错误记录 Ceph 运维手册
  14. 通过量子通信传递的密信为什么不可破解
  15. 51Nod——T 1631 小鲨鱼在51nod小学
  16. port and land
  17. 假设检验-单样本比率检验(二项分布)
  18. python运行命令_Python执行系统命令教程
  19. [Android]电话拨号器
  20. linux ssl证书卸载,Linux的ssl证书安装教程

热门文章

  1. 新媒体运营教程:了解短视频核心,让短视频运营脱颖而出
  2. 记一次美团点评校招java面试经历
  3. 程序人生 | 程序员感觉技术停滞了怎么办?找个师傅引导架构之路
  4. MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟
  5. uva 11205 The broken pedometer
  6. 新手如何实现自媒体盈利,我把自媒体变现的套路都总结出来
  7. mysql jpa List_jpa查询数据库返回list
  8. mate20html查看器,华为mate20pro怎么看屏幕供应商
  9. pandas入门(6)——数据加载、存储与文件格式
  10. 东方博宜OJ 1002 - 【入门】编程求解1+2+3+...+n