Type-challenges题目(第三部分)
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题目(第三部分)相关推荐
- 题目:三个售票员 卖出 30张票 || 多线程编程的企业级套路+模板||synchronized与Lock的区别
package com.dym.juc;//资源类 class Ticket {private int number =30;public synchronized void saleTicket() ...
- 笔试面试题目:三点共线的判断
看腻了认知鸡汤,你一无所获,味同嚼蜡?看累了万字长文,你收藏了事,心事重重? 那么,我们一起,上点算法小菜,斟点程序小酒,品味一下短小的趣味算法和程序,别有一番风味. 面试题目 在本文中,我们要讨论的 ...
- PMP新考纲 敏捷题目 (三)
61.传统管理的项目使用Scrum来开发项目可交付成果.敏捷发布规划要求将最近完成的MVP部署到生产中.然而,质量保证(QA)部门拒绝了MVP,声称部门的政策和程序没有处理中期可交付成果的实施.将问题 ...
- C语言的三个经典题目:三步翻转法、杨氏矩阵、辗转相除法
文章目录 三步翻转法 杨氏矩阵 辗转相除法 三步翻转法 三步翻转法是C语言中用来求旋转字符串的一种进阶方法,我们以具体例题对其进行介绍. 例:求一个字符串左旋n个字符后得到的新字符串 普通方法实现 我 ...
- 京东实习生招聘题目解析(三)
有段时间没写了,但是之前把JD剩余的题目基本还是过了一次,题目总体都比较简单,本次的解析选择了其中的5个题目,由于比较简单,就分析的简略些,留一些思考的空间.因为很久没有更新,最近还会和大家讨论一个动 ...
- C语言编程题目(三)
题目:给数据文件IN.DAT中写入300个4位随机数.调用函数readDat()把这些随机数存入数组a中.编写函数jsValue(),其功能是求出千位数减去百位数减去个位数大于0的数的个数cnt,再求 ...
- NYOJ 题目68 三点顺序
三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针 ...
- 牛客网-数据结构笔试题目(三)-博弈论圆圈游戏(Circle Game)(附源码)
题意 从前有两个人,一个叫Utkarsh,另外一个叫Ashish. 这两个人在一个2D的棋盘上玩移动棋子的游戏,一开始从原点出发,Ashish先手.每次可以把棋子向上或者是向右移动k个单位的距离.两人 ...
- 应用MATLAB求解线性代数题目(三)——n维向量
目录 判定线性相关并给出极大无关组 向量空间--维数 size()函数 判定线性相关并给出极大无关组 MATLAB中没有直接判定线性相关并给出极大无关组. 根据线性代数的知识,先求出秩,根据秩的大小与 ...
最新文章
- FPGA在人工智能时代的独特优势
- ubuntu_subversion_mantis_testlink使用ldap认证
- DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
- python version 3.4 required_Python version 3.3 required, which was not found in the registry
- java类加载器_JAVA类加载器
- 【零基础入门数据挖掘】-特征工程
- RxSwift之UI控件UIActivityIndicatorView与UIApplication扩展的使用
- 四则运算系统:分析和设计
- 开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
- 4.11_facade_结构型模式:外观模式
- 高斯投影坐标计算例题_利用MAPGIS软件进行投影变换
- windows 实验报告
- 【读书笔记】C#高级编程 第九章 字符串和正则表达式
- [UEFI启动教程]移动硬盘安装U盘装机助理(双模式启动)
- AS/400数据同步专家
- 三维扫描+逆向建模+3D打印复刻工艺品
- 计算机如何重新连接打印机,打印机脱机怎么处理 打印机重新连接方法教程
- Storm示例剖析-fastWordCount
- 通达信 服务器 修改,通达信金融交易终端(开心果交易版)V2020版,修改导航菜单...
- c语言函数参数从右往左,C语言函数入参压栈顺序为什么是从右向左?