码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Type-challenges题目(第三部分)


    Type-challenges题目(第三部分)

    3060 Unshift

    在这里插入图片描述

    用扩展运算符即可。

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

    3312 Parameters

    在这里插入图片描述

    使用infer 推导即可。

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

    2 获取函数返回类型

    在这里插入图片描述

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

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

    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>>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    • 2
    • 3
    • 4
    • 5
    // = 为泛型参数设置默认值 
    // 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    9 深度 Readonly

    在这里插入图片描述

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

    type DeepReadonly<T> = {
      readonly [P in keyof T]: keyof T[P] extends never ? T[P] : DeepReadonly<T[P]>
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    大学生阅读小说网页设计模板代码 柏书旧书网带登录表单 注册表单小说书籍网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品
    函数相乘和相除的导数及证明
    第十三章第三节:Java数据结构预备知识之泛型
    在家自己动手修电视解决屏幕跳动问题
    SpringCloud 注册中心 (Eureka) 快速入门
    因特网中的DNS域名系统
    Vant组件库入门知识
    SQL对数据进行去重
    [Spring] @Bean 修饰方法时如何注入参数
    类与对象(中)
  • 原文地址:https://blog.csdn.net/weixin_45750972/article/details/127740563
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号