返回顶部
首页 > 资讯 > 精选 >TypeScript的交叉类型和联合类型是什么
  • 288
分享到

TypeScript的交叉类型和联合类型是什么

2023-07-04 22:07:57 288人浏览 薄情痞子
摘要

这篇文章主要介绍了typescript的交叉类型和联合类型是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript的交叉类型和联合类型是什么文章都会有所收获,下面我们一起来看看吧。交叉类型(In

这篇文章主要介绍了typescript的交叉类型和联合类型是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript的交叉类型和联合类型是什么文章都会有所收获,下面我们一起来看看吧。

    交叉类型(Intersection types)

    什么事交叉类型呢?简单来说就是通过&符号将多个类型进行合并成一个类型,然后用type来声明新生成的类型。这里我举个例子,具体如下:

    interface ClassA{    name:string;    age:number}interface ClassB{    name:string;    phone:number;}

    将接口ClassA和接口ClassB通过&进行合并创建一个新的接口类型Class

    type Class = ClassA & ClassBlet info:Class = {    name:'zhagsan',    age:18,    phone:1573875555}

    要点

    任何类型都能通过&合并成新的类型吗?

    • 这肯定是不行的,原子类型进行合并是没有任何意义,因为它们合并后的类型是never,比如string&number,这肯定是错误的,因为不可能有既满足字符串又满足数字类型。

    合并的接口类型中具有同名属性,该怎么处理?

    • 这里分两种情况,如果同名属性的类型相同则合并后还是原本类型,如果类型不同,则合并后类型为never

    interface X{q:number,w:string}interface Y{q:boolean,r:string,}type XY = X&Y

    编辑器中直接就给我们了提示,如下图所示:

    TypeScript的交叉类型和联合类型是什么

    再举一个稍微复杂点的例子

    interface A {    inner: D;}interface B {    inner: E;}interface C {    inner: F;}interface D {    d: boolean;}interface E {    e: string;}interface F {    f: number;}
    type ABC = A & B & C;let abc: ABC = {    inner: {        d: false,        e: 'className',        f: 5    }};

    联合类型(UNIOn types)

    联合类型和交叉类型比较相似,联合类型通过|符号连接多个类型从而生成新的类型。它主要是取多个类型的交集,即多个类型共有的类型才是联合类型最终的类型。联合类型可以是多个类型其中一个,可做选择,比如:string | number,它的取值可以是string类型也可以是number类型。
    举几个例子,如下所示:

    • 声明变量的时候设置变量类型

    let a:string|number|boolean;a = 's';a = 1;a= false;
    • 多个接口类型进行联合

    interface X{q:number,w:string,r:string}interface Y{q:numberr:string,}type XY = X | Ylet value:XY = {    q:1,    r:'r'}
    • 函数接口类型进行联合

    interface X{x:()=>string;y:()=>Number;}interface Y{x:()=>string;}type XY = X|Y;function func1():XY{//此处不进行类型断言为XY在编辑器中会报类型错误  return {} as XY}let testFunc = func1();testFunc.x();testFunc.y(); //Error:类型“XY”上不存在属性“y”,类型“Y”上不存在属性“y”。

    另外我们还要注意,testFunc.x()还会报类型错误,我们需要用类型守卫来区分不同类型。这里我们用in操作符来判断

    if('x' in testFunc) testFunc.x()

    类型缩减

    • 当字面量类型和原始类型进行联合,那么就会造成类型缩减。

    type A = 'a' | string;  //string类型type B = false | boolean; //bolean 类型type C = 1 | number; //number类型
    • 当然枚举也会有类型缩减现象,如下:

    enum Class{   A,   B }type C = Class.A | Class;//Class类型

    我们发现:TS会把字面量类型和枚举成员类型给缩减掉,只剩下原始类型和枚举类型
    思考一个问题:当接口类型进行联合,接口中同名属性的类型不同,该怎么进行缩减呢?比如下面的例子,看到这里的话,如果你知道答案写在评论区。

    interface A{   name:string}interface B{   name:string | number   [property:string]:any}type AB = A|B

    关于“TypeScript的交叉类型和联合类型是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“TypeScript的交叉类型和联合类型是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: TypeScript的交叉类型和联合类型是什么

    本文链接: https://lsjlt.com/news/347761.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • TypeScript的交叉类型和联合类型是什么
      这篇文章主要介绍了TypeScript的交叉类型和联合类型是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript的交叉类型和联合类型是什么文章都会有所收获,下面我们一起来看看吧。交叉类型(In...
      99+
      2023-07-04
    • TypeScript联合类型,交叉类型和类型保护
      目录1.联合类型2.交叉类型3.类型保护3.1自定义类型保护3.2typeof 类型保护3.3instanceof类型保护1.联合类型 所谓的联合类型就是定义一些类型,定义的变量只...
      99+
      2024-04-02
    • TypeScript联合类型,交叉类型和类型保护怎么理解
      本篇内容介绍了“TypeScript联合类型,交叉类型和类型保护怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.联合类型所谓的联合...
      99+
      2023-06-22
    • TypeScript中的交叉类型和联合类型示例讲解
      目录交叉类型(Intersection types)要点联合类型(Union types)类型缩减 交叉类型(Intersection types) 什么事交叉类型呢?简单...
      99+
      2022-12-31
      TypeScript交叉类型与联合类型 TypeScript交叉类型 TypeScript联合类型
    • TypeScript如何使用交叉类型
      这篇文章主要为大家展示了“TypeScript如何使用交叉类型”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“TypeScript如何使用交叉类型”这篇文章吧。交...
      99+
      2024-04-02
    • 一文读懂TS 中联合类型和交叉类型各自的含义
      目录一、简单的联合类型二、对象类型的并集和交集三、文氏图四、集合理论五、类型和集合之间的关系六、了解联合类型和交叉类型七、交叉类型的真实示例八、总结九、参考资源联合类型在 TypeS...
      99+
      2022-12-31
      TypeScript 联合类型和交叉类型 TypeScript 交叉类型 TypeScript 联合类型
    • 前端TypeScript学习day04-交叉类型与泛型
      (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)            目录 交叉类型 泛型 创建泛型函数 调用泛型函数: 简化调用泛型函数: 泛型约束  指定更加具体的类型 添加约束  泛型接口 ...
      99+
      2023-10-21
      学习 前端 javascript vscode typescript
    • JS TypeScript的Map对象及联合类型实战
      目录一.TypeScript的Map对象1.1迭代 Map二.TypeScript 联合类型2.1扩展知识2.2总结一.TypeScript的Map对象 类型脚本映射对象。 map对...
      99+
      2024-04-02
    • TypeScript中的递归类型是什么
      这篇文章主要讲解了“TypeScript中的递归类型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TypeScript中的递归类型是什么”吧!什么是递归类型?递归类型是指一个类型在定义...
      99+
      2023-07-05
    • TypeScript 4.1中的模板字面类型是什么
      这篇文章主要介绍“TypeScript 4.1中的模板字面类型是什么”,在日常操作中,相信很多人在TypeScript 4.1中的模板字面类型是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”TypeScr...
      99+
      2023-06-15
    • 返回 Golang 中的联合类型
      Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《返回 Golang 中的联合类型》带大家来了解一下##content_title##,...
      99+
      2024-04-04
    • TypeScript 映射类型是怎样的
      这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留...
      99+
      2023-06-22
    • typescript返回值类型和参数类型的具体使用
      目录返回值类型可缺省和可推断的返回值类型Generator 函数的返回值参数类型可选参数和默认参数剩余参数返回值类型 在 JavaScript 中,我们知道一个函数可以没有显式 re...
      99+
      2024-04-02
    • Python集合类型中set和frozenset是什么
      这篇文章将为大家详细讲解有关Python集合类型中set和frozenset是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。集合类型-set, frozensetset 对象是由具有唯一性的hasha...
      99+
      2023-06-29
    • Javascript中基本类型和引用类型是什么
      这篇文章给大家分享的是有关Javascript中基本类型和引用类型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1.基础类型A. 基础类型有5种,Number,...
      99+
      2024-04-02
    • C#基元类型、值类型、引用类型是什么
      这篇文章主要讲解了“C#基元类型、值类型、引用类型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#基元类型、值类型、引用类型是什么”吧!首先了解下什么是基元类型,基元类型是编译器直接...
      99+
      2023-06-17
    • js中值类型和引用类型的区别是什么
      这篇文章主要介绍“js中值类型和引用类型的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js中值类型和引用类型的区别是什么”文章能帮助大家解决问题。1.JavaScript中的变量类型有哪...
      99+
      2023-07-02
    • 详解TypeScript映射类型和更好的字面量类型推断
      目录概述使用映射类型构建 Object.freeze()映射类型的语法更直观解释更多映射类型的示例映射类型的实际用例更好的字面量类型推断更好的 const 变量推断更好的只读属性推断...
      99+
      2024-04-02
    • PHP中标量类型、复合类型和特殊类型的示例分析
      这篇文章主要介绍了PHP中标量类型、复合类型和特殊类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在PHP中,支持8种原始数据类型,其中包括四种标量类型、两种复合...
      99+
      2023-06-20
    • TypeScript类型实现加减乘除的方法是什么
      这篇文章主要介绍了TypeScript类型实现加减乘除的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript类型实现加减乘除的方法是什么文章都会有所收获,下面我们一起来看看吧。引言在网上...
      99+
      2023-07-06
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作