本文将简述类型系统中的类型联合,通俗的来说就是将一个变量规定为不是某一个类型,而是某些类型,我们在日常开发中很常见下面会给出例子。

值类型

在JavaScript中用const声明的变量是不可以再次赋值的,也就是常量。在TypeScript中也可以用一个值来约束变量,作用其实和const声明的变量差不多。

let a: "abc" = "abc";
a = "def" // 报错 不能将类型“def”分配给“abc”

这个例子表明:a变量的类型是字符串“abc”,导致这个变量只能赋值为"abc",赋值其他字符串就会报错。

在TypeScript中,如果遇到const声明的变量并且没有进行类型约束,那么就会将其识别为值类型。

const x = "hello"
x = "hi" // 报错 无法分配到"x" 因为是常量

这样推断是合理的,因为const命令声明的变量,一旦声明就不能改变,相当于常量。值类型就意味着不能赋为其他值。

注意:用const声明的变量,如果赋值为对象并不会推断为值类型,因为在JavaScript中对象的属性是可以改变的

在日常开发中,单个值类型的作用不大也不常用,往往是将多个值类型联合起来使用。

联合类型

联合类型是指:多个类型组成一个新的类型,多个类型之间用符号 | 连接

联合类型A | B表示:必须满足类型A或者类型B。

let x: number | string
x = 2
x = "123"

此时的x既可以是number类型,也可以是string类型。

联合类型也可以和值类型相结合,举一个很简单的例子:

let sex: "男"|"女"

性别只能是男或者女,这样用值类型和联合类型相结合进行的约束,这样可以清楚的规定好变量的取值范围,不至于犯错。当然也可以将null和undefined类型联合进去。

当我们是用联合类型时,要注意类型缩小的问题:

function parse(s: string | number) {console.log(s.toUpperCase()) // 报错 类型“number”上不存在属性“toUpperCase”
}

此时我们需要在函数内部将类型缩小

function parse(s: string | number) {if (typeof s === "string") {console.log(s.toUpperCase());} else {console.log(s);}
}

 交叉类型

交叉类型也是将多个类型组合为一个新的类型,类型之间用 & 连接。

A&B 表示必须同时满足A类型和B类型。

交叉类型主要用于对象之间的组合。

let a :{x:number}&{y: string}a = {x: 1,y: "2"
}

变量a必须同事满足两个类型才可以成功赋值。

类型别名 type

类型别名是定义一个类型的关键字,将类型定义好之后,不同的地方约束类型的时候可以复用,减少代码的冗余。

type命令用来定义一个类型的别名。

type Person = {name: stringage: numbersex: "男" | "女"job: string
}let Tom: Person = {name: "Tom",age: 20,sex: "男",job: "外卖小哥"
}

别名可以让类型的名字变得更有意义,也能增加代码的可读性,还可以使复杂类型用起来更方便,便于以后修改变量的类型。(类型别名不可以重名!!!)

type定义的类型别名是类型相关的代码,在编译为JavaScript之后就会全部消失。

其他常用类型

void: 通常用于函数的返回值,表示函数没有任何返回值

never 通常用于约束函数的返回值,表示函数永远不会结束

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC08,速度闭环控制(有电流环)

导言 《STM32F405CubeMXHAL库SimpleFOC07,ADC采样相电流,频率20KHz(TIM1触发Injected Sampling中断》,有了上一章节的电流采样后,可以完善速度闭环控制了。 有了电流环的速度闭环控制,电机的扭矩会显得大很…

【机械故障】共振峰

机械故障信号分析 提示:学习笔记 1、机械振动名词 2、共振峰 共振峰 机械故障信号分析 1、机械振动名词 [2、共振峰](https://editor.csdn.net/md/?not_checkout=1&activity_id=10937&spm=1057.2600.3001.10415) @[TOC](共振峰) `详细讲解共振峰、共振频率带、共振频…

力扣(用队列实现栈)

解析 LeetCode 225. 用队列实现栈:单队列的巧妙运用 一、题目分析(一)功能需求 实现 MyStack 类,支持栈的四种操作: push(int x):将元素压入栈顶。pop():移除并返回栈顶元素。top():…

服务器Docker 安装和常用命令总结

Docker 安装和常用命令总结Docker 是一种开源平台,用于自动化应用程序的部署、扩展和管理。通过将应用程序及其依赖打包到一个轻量级、可移植的容器中,Docker 能够在任何地方统一运行,解决了不同环境间的兼容性问题。本篇文章将介绍 Docker 的…

2025年广东省无线电管理普法宣传活动

一、无线电发射设备型号核准相关制度及要求1.型号核准设备类型:一、公众网移动通信设备二、专用通信设备三、无线接入设备四、广播发射设备五、雷达设备六、导航设备七、卫星通信设备(含终端地球站)无线电发射设备八、公众网移动通信模块九、无线接入模块十、其他设…

使用 Whisper 将南蒂罗尔方言语音转录为标准德语文本的研究

使用 Whisper 将南蒂罗尔方言语音转录为标准德语文本的研究 原文:Speech transcription from South Tyrolean Dialect to Standard German with Whisper 本研究展示了首个经过微调的Whisper模型,用于将南蒂罗尔方言语音自动翻译为标准德语文本。为了满足字幕和翻译方面尚未被…

Nexus管理maven仓库和jar包的配置和使用

登录nexus以后点击Settings-Repository-Repositories-Create repository 选择maven2(hosted)创建两个仓库一个是Release叫做monitor-releases:一个是Snapshot叫做monitor-snapshots:在创建一个maven2(group)叫做monitor将maven-central(用于存…

疯狂星期四文案网第50天运营日记

网站运营第50天,点击观站: 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今天流量减了一些,我发现我的疯狂星期四的词没有排名第一了,感觉应该是抽象文案这个导致的,因为我发了…

计算机视觉学习路线:从入门到进阶的完整指南

计算机视觉学习路线:从入门到进阶的完整指南 计算机视觉(Computer Vision, CV)是人工智能领域最热门和最具前景的方向之一,它赋予机器“看”和“理解”图像与视频的能力。无论你是学生、工程师还是对AI感兴趣的爱好者&#xff0c…

移动应用抓包与调试实战 Charles工具在iOS和Android中的应用

随着移动互联网的发展,几乎所有应用都依赖API接口进行数据交互。无论是登录注册、支付功能,还是新闻资讯加载,背后都需要与服务器频繁通信。如何快速定位问题、验证数据传输、模拟弱网环境,成为移动端开发者日常工作中的关键任务。…

【Python NTLK自然语言处理库】

安装流程 import nltk nltk.download()运行后出现一个界面,然后按DownloadTokenize ###分词 from nltk.tokenize import word_tokenize text "The vendor paid $20,000,000." tokens word_tokenize(text) print(tokens)输出 [The, vendor, paid, $, 20,…

GitHub 热榜项目 - 日榜(2025-08-25)

GitHub 热榜项目 - 日榜(2025-08-25) 生成于:2025-08-25 统计摘要 共发现热门项目:20 个 榜单类型:日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术趋势:1)AI代理开发成主流,如moeru-ai/airi的虚拟伴…

Mac相册重复照片终结指南:技术流清理方案

你的Mac相册是否变成了"重复照片博物馆"?同一场景的多个版本、连续拍摄的相似图片、不同设备导入的重复文件...这些数字冗余正在悄无声息地吞噬着宝贵的存储空间。本文将为你提供一套完整的技术解决方案。重复照片问题的技术分析重复类型分类从技术角度&a…

日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法复习+单词第7回1

日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法单词第7回1 1、前言(1)情况说明(2)工程师的信仰2、知识点1ー 復習3、单词(1)日语单词  …

完美世界招数据仓库工程师咯

数据仓库工程师-偏BI方向 (岗位信息经过jobleap.cn授权,可在CSDN发布)完美世界 北京 职位描述 负责数据仓库架构设计、建模和ETL开发,构建可扩展的数据仓库和分析解决方案; 负责对数据仓库的性能和效率优化&#xff1…

RabbitMQ面试精讲 Day 26:RabbitMQ监控体系建设

【RabbitMQ面试精讲 Day 26】RabbitMQ监控体系建设 在“RabbitMQ面试精讲”系列的第26天,我们将聚焦于RabbitMQ监控体系建设这一关键运维主题。作为消息中间件的核心组件,RabbitMQ一旦出现消息积压、节点宕机或资源耗尽等问题,将直接影响系统…

把word按章节分为n份 一个文档拆分为多份格式不变

如果你有一个word文档,里面有很多章节,你想按照章节把它分为N份,每一份存放在一个独立的文档中,而且拆分之后的文档格式和图片都保持不变。那么你可以试一下这个工具。 #word拆分 #word按章节拆分 #word分为n份 #docx拆分章节 把w…

项目历程—缓存系统v1

实现目标1:输入key,value可以存储新建一个文件,并存储一个值 (√) 实现目标2:封装方法,循环创建1000个文件,分别存储一个值 (√) 实现目标3:通过输入一个key可以检测到文件里面的内容值 (√) 两…

最新刀客IP地址信息查询系统源码_含API接口_首发

目录 一、详细介绍 二、效果展示 1.部分代码 2.效果图展示 三、学习资料下载 一、详细介绍 最新刀客IP地址信息查询系统源码_含API接口_首发_自适应手机端 今天看到的这个接口,所以做了页面供大家方便使用 查询的IP信息包含: ASN编号 所属国家…