• TS的类型转换


    TS的类型转换



    元组类型转联合类型

    在这里插入图片描述

    元组类型转联合类型2

    在这里插入图片描述

    联合类型转交叉类型

    在这里插入图片描述

    将这个方法拆成两部分来看:

    (U extends any ? (k: U) => void : never)是第一部分
    extends (k: infer I) => void ? I : never是第二部分

    先看第一部分,TS中如果泛型后跟extends且这个泛型在实际传值是联合类型,则会遍历这个联合类型,取出联合类型中的每个具体类型做实际操作,最后返回每个类型的结果的联合类型

    U=string|number举例,第一部分实际上做的的操作是
    (string extends any ? (k:string) => void :never) | (number extends any ? (k:number) => void :never)
    简化之后的结果就是((k:string)=>void)|((k:number)=>void),这是两个函数类型的联合类型

    再看第二部分,利用了infer的函数参数类型推断,翻译一下就是如果想要找出一个函数
    使它满足一定条件后能被((k:string)=>void)|((k:number)=>void)赋值
    那么这个函数一定是(k:string&number)=>void

    从而推得函数参数类型是string&number作为结果


    对象属性转联合类型

    在这里插入图片描述

    键值对转对象属性

    在这里插入图片描述






    其他

    去除readonly

    在这里插入图片描述

    in 遍历时用 as 断言约束

    在这里插入图片描述

    是否为联合类型

    在这里插入图片描述

    联合类型作为泛型的时候 extends 会触发分发执行
    联合类型T写成 [T] 就变成了普通类型,extends的时候不会分发执行


    是否为never类型

    在这里插入图片描述

    never 是一个空的联合类型,因此要通过 [T] 将其变成普通类型,再去 extends

    [T][never]为元组,作为包装类型,如果联合类型被包装过,就不会被展开。
    另外,因为 never 类型不能扩展 never 类型,但是 never[] 可以扩展 never[]


    函数柯里化

    在这里插入图片描述

  • 相关阅读:
    XXL-Job与Elastic-Job详细对比
    架构设计的五个核心要素
    点击化学试剂DBCO-PEG-PLL 二苯并环辛炔-聚乙二醇-聚赖氨酸
    HCNP Routing&Switching之MAC安全
    LeetCode_栈_困难_1106.解析布尔表达式
    云IDE产品测评报告
    使用轮廓分数提升时间序列聚类的表现
    SpringBoot自动配置原理
    vxe-table表格事件汇总
    通讯协议介绍&CoAP 协议解析
  • 原文地址:https://blog.csdn.net/Raccon_/article/details/127750038