TypeScript联合类型、交叉类型

news2024/12/23 20:55:02

联合类型

        是指一个变量可以有不同的数据类型,通过 | 符号来表示,它的目的是将多个类型组合成一个类型。这些类型可以是基本类型,也可以是自定义类型。

let myVar: string;
myVar = 'hello';
myVar = 123; //error

        使用联合类型

let myVar: string | number;
myVar = 'hello';
myVar = 123;

        自定义类型

interface abc {
    'name' :string
}
let myVar: string | abc;
myVar = 'hello';
myVar = {'name': '前端'}

        函数传参也可以使用联合类型

function printId(id: number | string) {
    console.log(`id is ${id}`);
}

        联合类型的优点是在一些情况下可以简化代码,但缺点是会降低代码的可读性和可维护性。当联合类型过多时,代码的复杂度会显著增加。我们可以用类型别名来提高代码的可读性。

type Message = string | string[];

let greet = (message: Message) => {
  // ...
};

     

交叉类型

        交叉类型是将多个类型组合成一个类型,通过 & 符号来表示。这些类型可以同时拥有所有类型的属性和方法。我们可以将交叉类型看作是“并集”类型。

interface Person {
    name: string;
    age: number;
}
interface Employee {
    company: string;
}
type EmployeePerson = Employee & Person;
const employeePerson: EmployeePerson = {
    name: "John",
    age: 30,
};

这样是报错的。为什么?

因为交叉类型会将两个接口Person 和 Employee 类型组合成一个新的类型。

const employeePerson: EmployeePerson = {
    name: "John",
    age: 30,
    company: "ABC Inc",
};

这样子就不会报错了。那如果是基本类型呢?

答案是不行的。所以交叉类型只能作用在多个对象类型的组合。

交叉类型的优点是可以让我们快速定义具有多种属性和方法的对象类型,但缺点是当交叉类型过多时,代码的复杂度也会显著增加。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/982585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JNDIExploit-1.2-SNAPSHOT.jar工具在log4j漏洞复现中的使用

1.首先搭建log4j靶场 2.开启服务 Windows攻击端执行以下命令 java -jar JNDIExploit-1.2-SNAPSHOT.jar -l 8888 -p 9999 -i 127.0.0.1 再开一个cmd可以看下能用什么payload java -jar JNDIExploit-1.2-SNAPSHOT.jar -u 以上payload都可以尝试,我们使用 ldap:…

数据集笔记:GeoLife GPS 数据 (user guide)

数据链接:https://www.microsoft.com/en-us/download/details.aspx?id52367 1 数据基本信息 1.1 数据介绍 182名用户在超过三年的时间内(从2007年4月到2012年8月)在(微软亚洲研究院)Geolife项目中收集的。该数据集…

MATLAB R2023a完美激活版(附激活补丁)

MATLAB R2023a是一款面向科学和工程领域的高级数学计算和数据分析软件,它为Mac用户提供了强大的工具和功能,用于解决各种复杂的数学和科学问题。以下是MATLAB R2023a Mac的一些主要特点和功能: 软件下载:MATLAB R2023a完美激活版 …

工业4.0时代下,到底什么是智慧工厂?

关键词:智慧工厂、智慧工厂数字化、设备设施数字化、能源管理系统、动环监控、智能运维、数据采集、工业互联网 随着物联网、大数据和移动应用等新一轮信息技术的发展,全球化工业革命开始提上日程,工业转型开始进入实质阶段。作为工业4.0的最…

词!自然语言处理之词全解和Python实战!

目录 一、为什么我们需要了解“词”的各个方面词是语言的基础单位词的多维特性词在NLP应用中的关键作用 二、词的基础什么是词?定义分类 词的形态词根、词干和词缀形态生成 词的词性 三、词语处理技术词语规范化定义方法 词语切分(Tokenization&#xff…

Stable Doodle:简单涂鸦一键变成艺术品

摘要: Stable Doodle 是一款使用 AI 技术将简单涂鸦转化为艺术品的应用。它可以帮助用户快速、轻松地创作出精美的图画。本教程将介绍 Stable Doodle 的基本使用方法。 正文: Stable Doodle 的使用非常简单。只需以下几步即可: 打开 Stab…

Excel VSTO开发11-自定义菜单项

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 11 自定义菜单项 自定义菜单项可以在插件启动时候添加,即增加到ThisAddIn_Startup() 内。 下面以具体代码说明&#x…

it监控系统可以电脑吗?有什么效果

IT业务监控已经成为公司不可或缺的一部分,以确保业务的正常运行,提高企业的竞争能力。本文将详细介绍IT业务监控的必要性、实施方法以及如何选择合适的监控工具。 IT业务监控的必要性 确保业务稳定运行  IT业务监控可以实时检测公司的工作流程&#x…

基于VueCli创建自定义项目

1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动选择功能 选择vue的版本 3.x …

Bootloader概述和Uboot

Bootloader 基本概念 什么是Bootloader? Bootloader是硬件启动的引导程序,是运行操作系统的前提;在操作系统内核或用户应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;在嵌入…

【动态规划刷题 10】等差数列划分 最长湍流子数组

413. 等差数列划分 链接: 413. 等差数列划分 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回…

Multisim14.0仿真(九)反相放大器

一、仿真原理图: 二、运行效果:

【漏洞复现】E-office文件包含漏洞

漏洞描述 Weaver E-Office是中国泛微科技(Weaver)公司的一个协同办公系统。泛微 E-Office 是一款标准化的协同 OA 办公软件,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。 该漏洞是由于存在…

CMD关闭占用端口

1. netstat -ano | findstr :xxxx 2. taskkill /pid xxxx 3. 强制关闭taskkill/F /pid xxxx

大基金三期再拨400亿美元 | 百能云芯

近日,知情人士透露,中国计划启动一个新的国家支持的投资基金,旨在为半导体行业筹集大约400亿美元。这将是中国集成电路产业投资基金(大基金)推出的第三只基金,也可能是规模最大的一只。计划筹集的资金目标为…

win11 系统 Internet Connection Sharing (ICS) 服务无法关闭-问题解决

问题出现在matebook ego ,出现一个问题就是一连上电源,运行ipconfig ,WLAN 2就会自动给配上一个192.168.137.1的ip,一断开电源这个ip就会小时,因为我要创建一个热点,如果这个ip有了那么热点会创建失败!于是开始排查&am…

假期摆烂之学习javaweb

Mybatis: 概念: 是一款优秀的持久层框架,用于简化 JDBC的开发:持久层也就是三层架构里面的dao层,JDBC是规范;框架就是一个半成品的软件,是一套可重复用,通用的,软件基础代码模型&a…

Python中的异常处理3-1

Python中的异常指的是语法上没有错误,但是代码执行时会导致错误的情况。 1 抛出异常 在图1所示的代码中,要求用户输入一个数字,该代码在语法上没有错误。 图1 出现异常的代码 但是运行该代码之后,如果用户输入的是数字&#xf…

反转字符串 反转字符串 || 反转字符串 |||

思想总结:首先将字符串转变为字符数组,再进行遍历并反转字符。 1.反转字符串 代码: class Solution {public void reverseString(char[] s) {reverse(s,0,s.length); //左闭右开}public static void reverse(char[] ch,int i,int j) { 翻转函…

易基因:MLL1/DNA低甲基化介导子宫肌层干细胞发育重编程的表观遗传机制|组学研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 子宫肌瘤(uterine fibroids,UF)是生殖系统最常见的良性肿瘤,也是子宫切除手术最常见的指征。尽管患病率很高,但子宫肌瘤的确切…