一、TypeScript 类型注解

1、什么是TpyeScript类型注解

        - 是否还记得TypeScript的两个重要特性?

                  - 类型系统、适用于任何规模

        - 可以说,TS的类型系统是TS最重要的功能;那么什么是类型注解呢?其实就是在声明变量时,将变量的类型一同声明出来 

                let 变量.类型=“值”

                简写:let 变量 = 值

                当省略.类型时,系统会自动根据当前值确定当前变量的类型

2、类型注解的优势

        - 当使用类型注解之后,变量值的类型将不能发生改变,否则就会报错,这样就可以保证代码的严谨性和规范性

        

         - 当使用类型注解之后,在变量后面敲一个.运算符,可以发现当前数据类型下的方法和属性都会帮助你提示出来

        

3、vscode错误提示插件

如果想让vscode的错误提示更明显一些,可以下载插件帮助完成

        

可以发现,开启之后,错误更加直观

        

TypeScript中的类型注解有那些

1、TS中支持的类型有哪些?

        可以将TS中常见的基础类型分两类:

                - JavaScript已有类型

                        简单类型:number、string、boolean、null、undefined

                        复杂类型:数组、对象、函数(在ts中,将object类型做了更细致的划分)、

                - TypeScript新增类型

                        联合类型、自定义类型(类型别名)、接口、元祖、字面量类型、枚举、void…

一、TypeScript类型约束 - 简单类型

        1、TS已有类型中的简单类型

                对于简单类型其实很容易理解和掌握,跟number一样,可以尝试一下其他简单类型

                

2、解决一个问题

        在复杂类型之前,来看一个现象,将main.ts复制一份出来,会发现ts文件中咱们之前的变量都会报错

       

        原因就是ts环境下,程序认为在同一个目录下的文件都是同一块作用域,所以变量出错

        解决办法:将代码套在花括号({}块级作用域)中,将变量的作用域隔绝开

        

这个错误,声明了变量未使用, 使用一下就不会报错了。

二、TypeScript类型约束 - 数组

1、TS已有类型中的负载类型 - 数组

        数组类型的定义还是有点特殊的,因为数组的定义不是定义变量本身是数组类型,而是定义数组内部可以存放什么类型的数据

                - 数组定义方式 1:

                        let arr.number[]=[],

                        number[]是约束数组中存储的数据必须是数字类型

                - 数组 定义方式 2:

                        let arr.Array<string>=[] ;利用了泛型的知识点,后面会详细讲解泛型

三、TypeScript类型约束 - 联合类型

        学习完数组的定义方法之后,肯定有一个问题,就是如果数组中存在的数据类型不止一种怎么办这就是需要用到联合类型了:

       联合类型其实就是通过 | 运算符,将多个类型隔开,已达到都能兼容的目的

                let arr.(number | string)[]=[]

                当然,如果还有更多类型,就可以通过|去连接即可

        联合类型除了可以在定义数组时使用,在定义普通变量时也可以使用

                let params:number|null=null

         比如咱们之前在做练习时,经常使用变量接收一个计时器,其实计时器返回的结果是一个数字,是计时器的id。但是咱们在定义变量的时候经常定义成null,所以这时候就可以通过联合类型解决这个问题:

        

总结:其实联合类型并不是一个新类型,只是多个类型的结合而已!

四、TypeScript类型约束 - 类型别名

想要知道什么是类型别名,大家来看一下下面这种情况,比如我有一个数组,里边可以存放number/string/boolean/null/undefined:

        let arr: ( number | string | boolean | null | undefined )[] = [ ];

好的,比如现在我有多个这样的数组,你的代码结构就会变成:

        let arr: ( number | string | boolean | null | undefined )[] = [ ];

        let arr: ( number | string | boolean | null | undefined )[] = [ ];

        let arr: ( number | string | boolean | null | undefined )[] = [ ];

虽然说这么写也没什么问题,但是代码质量看起来确实很low,那么如果我能把类型当做一个变量存储起来,是不是可以极大的简写代码结构呢?

 类型别名 type ArrType = ( number | string | boolean | null | undefined )[];

        let arr: ArrType = [ ];

        let arr: ArrType = [ ];

        let arr: ArrType = [ ];

类型别名就是使用关键词type,把你的其他类型封装成一个变量,然后使用类型别名去定制变量的类型!

当然,类型别名可以很灵活的去定制:

        type ArrType = number | string | boolean | null | undefined;

        let arr: ArrType[] = [ ];

提示:类型别名建议首字母大写

五、TypeScript类型约束--函数

函数创建好之后需要参数以及有返回值,在TS中就需要对参数和返回值做类型限制:

        - 函数声明语法格式:

                function 函数名(参数1: 类型, 参数2: 类型):返回值类型 { 函数体 }

                 function count( param1: number, param2: number ): number { return a + b; }

        - 函数表达式语法格式:

                let 函数名 = function(参数1: 类型, 参数2: 类型):返回值类型 { 函数体 }

                let count = function( param1: number, param2: number ): number { return a + b; }

        - 箭头函数语法格式:

                let 函数名 = (参数1: 类型, 参数2: 类型):返回值类型 => { 函数体 }

                let count = ( param1: number, param2: number ): number => { return a + b; }

注意:TS下的箭头函数就算只有一个参数,也不能省略小括号!否则会有语法错    误。

        - 函数参数不固定的情况

                对于有些函数,某些参数的情况可能不固定,有可能传有可能不传,如果不做处理的话,程序会报错

                

                针对这种情况,可以使用 “”来定制可选参数:

                

                并且注意,在可选参数之后,不能再出现必选参数了:

                

                对于ES6中的 reset 参数,当然也需要定义类型:

                

                reset就是一个数组,所以规定你程序必须的数组类型即可

        - 函数的类型别名

                函数的类型别名其实跟咱们以前的类型别名是一个道理,如果你需要定义多个参数相同、类型相同、返回值类型相同的函数,你的代码会变成:

                                

                针对这种情况,可以将参数类型以及返回值类型进行别名封装,简化代码结构:

                语法: type 函数类型别名 = (参数1: 类型,参数2:类型) => 返回值类型

                

                注意:函数的类型别名仅支持函数表达式写法,不支持函数声明写法!        

        - void类型

                在定义函数时,并不是每一个函数都会有返回值,有些函数是没有返回值的,那么当没有返回值的时候,一个函数的返回值类型应该是什么呢?

                

                通过一个没有返回值的函数大家可以发现,函数的返回值是 void , 所以,对于没有返回值的函数,他的默认返回值类型是void。

                当然, 你可以主动指定他的返回值类型是void。

                

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

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

相关文章

弗兰肯斯坦式的人工智能与GTM策略的崩溃

2025 年上半年已经明确了一件事&#xff1a;B2B 市场营销团队被工具淹没&#xff0c;但缺乏策略。人工智能无处不在。收入领导者在进行无休止的试点。营销团队拼凑各种点解决方案&#xff0c;希望能实现规模扩张。然而&#xff0c;销售线索的增长停滞不前。信誉正在受损。曾经承…

NAND闪存(NAND Flash)是什么?

NAND闪存(NAND Flash)是什么? NAND闪存(NAND Flash)详解 NAND闪存是一种非易失性存储介质(断电不丢失数据),广泛应用于SSD、U盘、手机存储等设备中。NAND Flash 的全称是 “Negative-AND Flash”(与非型闪存),其名称源自其底层存储单元的电路结构——基于**“与非门…

Android性能优化之UI渲染优化

一、UI渲染核心瓶颈深度解析 1. 渲染管线关键阶段阶段CPU工作GPU工作潜在卡顿点Measure计算View尺寸-嵌套布局多次测量Layout计算View位置-频繁重排(Relayout)Draw构建DisplayList指令集-复杂自定义View.onDraw()Sync & Upload资源上传到GPU内存纹理上传大图/未压缩资源Ras…

基于Spring AI Alibaba的智能知识助手系统:从零到一的RAG实战开发

&#x1f4d6; 项目概述 在人工智能快速发展的今天&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff09;技术已成为构建智能问答系统的核心技术。本文将详细介绍一个基于Spring AI Alibaba DashScope深度集成的智能知识助手系统的完整开发过程&#xff0c;…

VirtualBox + CentOS:启用 DHCP 获取 IPv4 地址

标题&#xff1a; VirtualBox CentOS&#xff1a;启用 DHCP 获取 IPv4 地址 日期&#xff1a; 2025-07-18 一、问题现象 最小化安装的 CentOS 7 虚拟机里敲&#xff1a; ip addr输出只有 lo 的 127.0.0.1 以及 enp0s3 的 IPv6 链路本地地址&#xff0c;没有 IPv4&#xff0…

Git

Git简介Git 是一个分布式版本控制工具&#xff0c;通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件&#xff0c;Git 仓库分为两种:本地仓库:开发人员自己电脑上的 Git仓库。远程仓库:远程服务器上的 Git 仓库。commit: 提交, 将本地文件和版本…

通信算法之294:LTE系统中的整数倍频偏估计

在LTE系统中&#xff0c;整数倍频偏估计主要通过以下方法实现&#xff1a;一、最大似然估计法&#xff08;ML&#xff09;通过遍历预设的整数倍频偏范围&#xff08;如30kHz&#xff09;&#xff0c;将接收信号与本地的PSS序列在不同频偏点上进行相关运算&#xff0c;选择相关峰…

数字人直播:开启直播行业新纪元​

​原始尺寸更换图片p9-flow-imagex-sign.byteimg.com​​在科技日新月异的当下&#xff0c;直播行业正经历着一场深刻变革&#xff0c;数字人直播的兴起&#xff0c;宛如一颗璀璨新星&#xff0c;照亮了直播领域的新征程。数字人直播&#xff0c;是利用先进的人工智能技术&…

朝鲜升级供应链恶意软件XORIndex,再次瞄准npm生态系统

Socket威胁研究团队最新披露&#xff0c;朝鲜国家支持的黑客组织在"传染性面试"攻击活动中采用了新型恶意软件加载器XORIndex&#xff0c;该恶意程序专门通过npm软件包注册表渗透软件供应链。攻击规模与持续性此次攻击并非孤立事件&#xff0c;而是针对开发者、求职者…

Windows 下 VS2019 编译 libevent-2.1.10 库

1. 你需要VS2019 编译好openssl-1.1.1 &#xff0c;这个具体编译或者下载可以参考我的博客openssl生成的库是这两个文件接下来&#xff0c;打开CMake &#xff0c;主要是下面的需要设置好最后Config Generate即可&#xff1b;全部成功生成 22个然后INSTALL右键生成 最后看下生…

Vim多列操作指南

我们在使用 Vim 时&#xff0c;经常需要同时编辑多个文件&#xff0c;或者同一个文件的不同部分。Vim 提供了分割窗口&#xff08;split&#xff09;和垂直分割窗口&#xff08;vsplit&#xff09;的功能&#xff0c;允许我们在同一个 Vim 会话中查看多个缓冲区&#xff08;buf…

Python网络爬虫实现selenium对百度识图二次开发以及批量保存Excel

一.百度识图自动上传图片from selenium import webdriver from selenium.webdriver.edge.options import Options from selenium.webdriver.common.by import By edge_options Options() edge_options.binary_location r"C:\Program Files (x86)\Microsoft\Edge\Applica…

Vue中的refs字段使用记录

这段代码是 Vue.js 中结合 Element UI 等 UI 库的典型表单验证写法&#xff0c;具体含义如下&#xff1a;代码拆解 this.$refs.fromData.validate((valid) > {// 验证后的回调逻辑 })this.$refs.fromData $refs 是 Vue 提供的特殊属性&#xff0c;用于访问模板中通过 ref&qu…

多方案对比分析:后端数据加密策略及实践

多方案对比分析&#xff1a;后端数据加密策略及实践 随着互联网业务对用户隐私和数据安全的要求不断提升&#xff0c;后端系统中对敏感数据的加密保护已成为必备需求。从对称加密、非对称加密到数据库透明加密、应用层字段加密&#xff0c;各种方案各有特点。本文将以方案对比分…

《Java语言程序设计》1.4 复习题

1.4.1 什么是操作系统?列出一些流行的操作系统?操作系统(Operating System)是运行在计算机上的最重要的程序。操作系统管理和控制计算机的活动。通用计算机的流行操作系统有Microsoft Windows、Mac OS以及Linux。如果没有在计算机上安装和运行操作系统&#xff0c;像Web浏览器…

OpenCV图像自动缩放(Autoscaling)函数autoscaling()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于对输入图像进行自动缩放&#xff08;Autoscaling&#xff09;&#xff0c;即根据输入图像的像素值范围将其线性映射到一个新的范围内&am…

多线程的认识

竞争与协作在单核 CPU 系统里&#xff0c;为了实现多个程序同时运行的假象&#xff0c;操作系统通常以时间片调度的方式&#xff0c;让每个进程执行每次执行一个时间片&#xff0c;时间片用完了&#xff0c;就切换下一个进程运行&#xff0c;由于这个时间片的时间很短&#xff…

SpringCloud相关总结

SpringCloud相关总结 1. 权威文档推荐&#xff1a; 官方文档&#xff1a;https://spring.io/cloud 玩的时候&#xff0c;注意SpringBoot与SpringCloud的版本兼容问题,推荐参考&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%…

NW983NW988美光固态闪存NW991NW992

美光NW系列固态闪存深度解析&#xff1a;技术、对比与应用指南一、技术根基与架构创新美光NW系列固态闪存的技术突破源于其先进的G9 NAND架构&#xff0c;该架构采用5纳米制程工艺和多层3D堆叠技术&#xff0c;在单位面积内实现了高达256层的存储单元堆叠&#xff0c;存储密度较…

pytest + requests 接口自动化测试框架

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 pytest + req