10. TypeScript 交叉类型

2023-10-31

TypeScript 交叉类型

1. 交叉类型(Intersection Types)是将多个类型合并为一个类型

interface Person1 {
  handsome: string,
}
interface Person2 {
  high: string,
}
type P1P2 = Person1 & Person2;
let p: P1P2 = { handsome: '帅', high: '高' }

2. 交叉泛型

function mixin<T, K>(a: T, b: K): T & K {
  return { ...a, ...b }
}
const x = mixin({ name: 'zf' }, { age: 11 })

3. 交叉接口

interface IPerson1 {
  name: string,
  age: number
}

interface IPerson2 {
  name: number,
  age: number
}

type person = IPerson1 & IPerson2 //  name 既是 string 又是 number 所以只能是 never
let name!: never // never 代表不会出现的值
let person1: person = { name, age: 22 }

GitHub Gitee
https://github.com/shunyue1320/TypeScript-learn https://gitee.com/shunyue/TypeScript-learn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10. TypeScript 交叉类型 的相关文章

随机推荐

  • 多线程下载

    原理 服务器cpu分配给每条线程的时间片是相同的 服务器带宽平均分配给每个线程 所以客户端开启的线程越多就能抢占到更多的服务器资源 用java实现 public class NultiDownload static String path
  • MySQL多表关系及多表查询

    多表关系 在关系型数据库中存在着三种多表关系 分别是一对多 多对一 多对多以及一对一 之所以会产生这些关系 是因为在进行数据设计的时候 分析得出业务之间存在着一定的关系 进而在数据中也就存在了这些关系 一对多 一对多是最基础的表间关系 意思
  • 给大家推荐一门比较适合用来学习流量分析技术的公开课(内附课程b站链接)

    最近看到同事在看一门课程 是CSNA出的一套免费对外公开课 跟着看了一下觉得不错 分享给大家 CSNA是国内比较老牌且低调的网络技术分析认证培训了 在网络运维和网络安全方向上还是有口皆碑的 课程内容比较体系化 有理论也有实操 涵盖了业务性能
  • php面试题猴子123报数(猴子选大王)

    题目就是有N个猴子 123循环报数数到3的猴子被踢出下一个接着报数 一遍一遍的循环直到剩余一个猴子 求这个猴子是最开始的第几号猴子 我想到了两个方法 第一个就是模拟报数的模式 每到3的时候unset一个元素 最后剩余的就是 要求的猴子 代码
  • windows如何关闭IIS (因为占用80端口而无法启动nginx)

    一 场景概述 正在写一个Web项目但是每次输入都需要加上端口号 所以想用服务器代理一下端口 让可以直接用nginx来解决这个问题但是 nginx异常无法打开 结果发现80端口被异常占用 因为windows的IIS也占用80端口号 比如win
  • 电脑命令教程计算机基础知识,电脑常用运行命令图文教程(DOS命令)

    本文介绍一些常用的运行窗口命令 也是DOS命令 同时所有的命令均在win7旗舰版测试通过 并附有运行后的图片 运行命令窗口如下 工具 原料 电脑一台 本文以win7系统的电脑为例 方法 步骤 1 调出运行命令窗口 按快捷键 win R 或者
  • java|8.18总结|基本功能

    1 思维导图 2 用自己的话描述某知识点是什么 举例 总结 一句话总结 环境变量 理解 环境变量相当于提前封装好一个环境 功能 在此环境下 比如在有path环境下 可以直接执行java文件 不用先进入JAVA的目录才能运行java 如果需要
  • 使用Docker安装配置Jupyter并配置R语言与Python环境

    文章目录 Docker docker的安装 将当前用户添加到docker用户组 拉取一个镜像 创建配置目录 启动docker服务 登录jupyter容器 安装vim 更换源 JupyterNotebook 设置python 安装Jupyte
  • 【burpsuite安全练兵场-服务端6】信息泄露漏洞-5个实验(全)

    前言 介绍 博主 网络安全领域狂热爱好者 承诺在CSDN永久无偿分享文章 殊荣 CSDN网络安全领域优质创作者 2022年双十一业务安全保卫战 某厂第一名 某厂特邀数字业务安全研究员 edusrc高白帽 vulfocus 攻防世界等平台排名
  • Vue中常用基础标签

    创建一个Vue实例 var vm new Vue el app data methods 在html中完整代码
  • 练习2-2 在不使用运算符&&或者

    1 for i 0 i lt lim 1 c getchar n c EOF i 2 s i c 3 4 5 while i lt lim 1 6 7 while c getchar EOF 8 9 while c getchar n 10
  • c语言基础总结之获取数组中元素最小值

    数组获取元素个数 sizeof ids sizeof int 需要根据字节的长度来计算个数 当然在java中直接 length来获取 c语言就是比较麻烦 毕竟java是封装语言 将繁杂的步骤分装好方便调用了 用随机数生成一个数组 写一个函数
  • Anaconda的安装与jupyter常用操作

    一 Anaconda的安装 关于Anaconda的在windows上的安装 我不做过多的赘述 大家可以参考博客 https ask hellobi com blog wangdawei 9786 这里 需要说明一下为什么选择Anaconda
  • 在虚拟机Docker安装MySQL8.0,Navicat连接数据库出错等踩过的坑

    Docker安装MySQL8 0 Navicat连接数据库 环境 虚拟机 CentOS 7 2 Docker 20 10 7 MySQL 8 0 27 安装MySQL 1 先创建两个MySQL使用文件夹 opt目录是Linux提供我们扩展的
  • 顺序表的定义和基本操作

    文章目录 顺序表的实现 静态分配 动态分配 顺序表的插入删除 顺序表的查找 总结 顺序表的实现 静态分配 include
  • 【C++入门】(拷贝)构造函数和析构函数

    1 构造函数和析构函数 1 构造函数 constructor 字面意思就是构造对象的函数 当我们定义类的对象时调用 可以帮我们完成对象的初始化 2 析构函数 destructor 可以看做是构造函数的逆过程 当销毁类的时候调用 做一些收尾的
  • 华为笔试面试机考

    学习目标 HJ2 计算某字符出现次数 学习内容 描述 写出一个程序 接受一个由字母 数字和空格组成的字符串 和一个字符 然后输出输入字符串中该字符的出现次数 不区分大小写字母 数据范围 1 n 1000 输入描述 第一行输入一个由字母和数字
  • DevOps教程:DevOps 架构

    注 本文译自 https www javatpoint com devops architecture 为了交付应用程序 开发和运营都扮演着至关重要的角色 部署包括需求分析 设计 开发以及软件组件或框架的测试 运营包括软件的管理流程 服务和
  • Python中的“ @”

    一 介绍 这是Python装饰器的语法 使用 符号 表示将装饰器函数放在被装饰函数的上方 当调用被装饰函数时 实际上是调用了装饰器函数 装饰器函数可以在调用被装饰函数之前或之后执行一些额外的操作 funA 作为装饰器函数 def funA
  • 10. TypeScript 交叉类型

    TypeScript 交叉类型 1 交叉类型 Intersection Types 是将多个类型合并为一个类型 interface Person1 handsome string interface Person2 high string