TypeScript 【类型推断】与【类型别名】的使用解读

news2024/11/17 5:45:40

在这里插入图片描述

什么是类型推断?

在 TypeScript 中, 如果声明变量时,没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。

以下代码虽然没有明确指定类型,但是会在编译的时候报错:

let myiten = "字符串"

myiten = 123

在这里插入图片描述
事实上,它等价于:

let myiten:string = "字符串"

myiten = 123

TypeScript 会在没有明确的指定类型的时候,可以根据初始化默认赋值的类型,推测出一个类型,默认把初始值的类型,就当做变量的类型,这就是类型推论。


如果定义的时候没有明确指定类型,并且也没有初始化赋值,那么不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查:

let myiten

myiten = false;
myiten = undefined;
myiten = "字符串";
console.log(myiten.length); //不会报错
myiten = 123;
console.log(myiten.length);  //这里会报错,因为 myiten 已经不再是 String了,类型已经被更改了,如果再读取 字符串的方法,就会报错。

作为函数时,如果没有手动指定返回值类型,则也会根据我们的 实际返回值,进而推断出返回值类型
在这里插入图片描述


类型别名

语法:type 别名 = 类型

  • 类型别名概念:主要用来给一个给较为复杂的类型起个新名字
  • 作用:把多个类型合并为一个类型
  • 好处:简化和复用类型

上案例:

数组定义类型时采用,类型别名

type TypeItem = (string | number);  //给类型自定义名称
type str = boolean | number | Boolean; //给类型自定义整合名称


let arr: TypeItem[] = [456]; //给变量直接赋值类型别名

let arr1: Array<str> = [123, false];//给变量直接赋值类型别名

let arr2: Array<(TypeItem)> = [123, "字符串"];//给变量直接赋值类型别名


type un = TypeItem | str;  //甚至还可以通过type 将多个类型别名进行再次整合。

let arrun: Array<un> = [789, "array", false];  //给变量赋值类型别名二次整合后的。

类型别名运用在普通变量和函数身上时:

type TypeItem = (string | number);

type str = boolean | null;

type un = TypeItem | str;


//类型别名用在普通变量身上
let a: un = false;
a = null;
a = false;
a = 456;
a = "fe";
a = {}  //会报错,所属类型不包含 OBJ{}   //不能将类型“{}”分配给类型"“un”。


//类型别名用在函数身上
function fn(a: un, b: un): un {

    return {}  //会报错,返回值所属类型不包含 OBJ{}   //不能将类型“{}”分配给类型"“un”。

}

类型别名常用于联合类型。作用好处是,简化和复用类型

总结:
本章节给大家介绍了在 TypeScript 中 类型推断的解读,以及定义类型别名的使用方式。


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

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

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

相关文章

APK反编译的那些事

谷歌对dex文件的介绍&#xff1a;常量数组/字符串 DEX_FILE_MAGIC 是字节列表&#xff0c;这类字节必须出现在 .dex 文件的开头&#xff0c;以便系统将其原样识别。该值会特意包含一个换行符&#xff08;"\n" 或 0x0a&#xff09;和空字节&#xff08;"\0"…

单片机原理及接口技术期末复习知识点

第1章 单片机概述 什么是单片机&#xff1a;单片机是由CPU、存储器、I/O接口及总线集成在一个芯片上。简单了解AT89S51单片机简介。 相当于MCS-51系列中的87C51&#xff0c;AT89S51芯片内4KB的Flash存储取代了87C51片内的4K的EPROM。 第2章 AT89S51单片机的内部结构 MCS-51单…

毫米波雷达系统性能参数分析

毫米波雷达系统性能参数分析 1、距离2、速度3、角度 本文主要分析描述雷达系统的系统性能的一些参数&#xff0c;包括最大作用距离&#xff0c;距离分辨率&#xff0c;最大探测速度……等参数。通过理解这些参数的组成&#xff0c;能够帮助我们设计雷达系统参数。 1、距离 &a…

做UI设计要会什么知识?

做UI设计要会什么知识&#xff1f;在互联网这个行业里&#xff0c;要想做好一件事情&#xff0c;做得好是必须要懂产品&#xff0c;懂用户体验。在很多人眼中&#xff0c;做设计就是打杂&#xff0c;干不了&#xff0c;其实不是这样的。要想成为一名优秀的UI设计师&#xff0c;…

Django高级扩展之系统后台使用celery

如果我们在系统后台想某日某时执行某个任务&#xff0c;或者每隔一段时间执行某个任务&#xff0c;可以使用celery来完成。 目录 安装 安装celery 安装django_celery_beat celery配置 注册应用 celery配置 修改__init__.py 表迁移 执行迁移 控制台运行截图 新增数据…

gunicorn不停服重启更新服务

简介 Gunicorn是基于unix系统&#xff0c;被广泛应用的高性能的Python WSGI HTTP Server。用来解析HTTP请求的网关服务。 它通常是在进行反向代理&#xff08;如nginx&#xff09;&#xff0c;或者进行负载均衡&#xff08;如 AWS ELB&#xff09;和一个web 应用&#xff08;比…

AI + 算力 = “最强龙头”?

随着人工智能技术的飞速发展&#xff0c;“AI算力”的结合应用已成为科技行业的热点话题&#xff0c;甚至诞生出“AI算力最强龙头“的网络热门等式。该组合不仅可以提高计算效率&#xff0c;还可以为各行各业带来更强大的数据处理和分析能力&#xff0c;从而推动创新和增长。 …

Java项目-SpringBoot+Vue 的学生就业管理信息系统

&#x1f495;&#x1f495;作者&#xff1a;程序员徐师兄 个人简介&#xff1a;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&…

小航助学2023年6月GESP_C++三级试卷(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 单选题2.0分 删除编辑附件图文 答案:D 第1题高级语言编写的程序需要经过以下&#xff08; &#xff09;操作&#xff0c;可以生成在…

geo-tool 解析百度经纬出错 {‘status‘: 240, ‘message‘: ‘APP 服务被禁用‘}

geo-tool 解析百度经纬出错 {status: 240, message: APP 服务被禁用} 引子一、查错二、排错三、测试通过参考 作者&#xff1a;高玉涵 时间&#xff1a;2023.6.25 环境&#xff1a;Windows 10 专业版 22H2&#xff0c;Python 3.10.4 第三方包&#xff1a;geo-tool 1.1.2 引…

【模拟CMOS集成电路】HSPICE入门仿真分析实例

【模拟CMOS集成电路】HSPICE入门仿真分析实例 一、采用HSPICE的MOS器件仿真二、INV倒相器HSPICE仿真附录程序源码&#xff08;一&#xff09;程序源码&#xff08;二&#xff09; 一、采用HSPICE的MOS器件仿真 一、采用HSPICE的MOS器件仿真, 并回答以下问题。   1&#xff0…

Visual Studio 2019使用详解

VS2019&#xff08;Visual Studio 2019&#xff09;是由微软开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发各种应用程序&#xff0c;包括桌面应用程序、Web应用程序、移动应用程序等。 对工具的熟悉程度有助于提升开发效率&#xff0c;磨刀不误砍柴功&am…

solr快速上手:整合spring-data-solr实现客户端操作(十)

0. 引言 前一章介绍了官方的solr客户端SolrJ&#xff0c;但是solrJ的使用相对来说并不方便&#xff0c;仍然需要做一些负责的客户端操作以及语句的书写&#xff0c;有没有更加方便的ORM框架呢&#xff0c;这就提到了spring-data-solr了 1. 简介 首先如果你还不知道spring-da…

面试题:深拷贝和浅拷贝(+内存图)

深拷贝和浅拷贝主要是针对对象的属性是对象&#xff08;引用类型&#xff09; 一、基本类型和引用类型的区别 1&#xff09;、基本类型&#xff1a;就是值类型&#xff0c;即在变量所对应的内存区域存储的是值。 2&#xff09;、引用类型&#xff1a;就是地址类型。 何为地…

Kubeadm 部署k8s实现并且演示滚动不停服务更新

1. 环境准备 在开始之前&#xff0c;部署Kubernetes集群机器需要满足以下几个条件&#xff1a; 一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x64&#xff1b;硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多&#xff1b;集群中…

【Activiti】原理

一、核心类 RepositoryService&#xff1a;部署管理流程资源&#xff0c;如bpmn文件、附件等等&#xff1b;RuntimeService&#xff1a;操作运行时的流程&#xff1b;TaskService&#xff1a;流程中任务的信息&#xff1b;HistoryService&#xff1a;流程的历史信息&#xff1…

ZYNQ——按键和LED关联实验

ZYNQ 7020黑金开发板的PL端有四个LED&#xff0c;如下图所示。 PL端也有四个KEY&#xff0c;如下图所示。 本文将把这四个按键和四个LED一一对应起来&#xff0c;在按键按下或松开时&#xff0c;对应的LED产生亮或灭的信号。 在原理图中找到PL端的LED和KEY如下图所示。 通过…

成为python爬虫工程师需要哪些知识?

爬虫&#xff08;Web crawler&#xff09;是一种自动化程序&#xff0c;用于从互联网上抓取、解析和提取网页数据。它模拟浏览器行为&#xff0c;通过发送HTTP请求获取网页内容&#xff0c;并通过解析网页源代码或DOM结构&#xff0c;提取所需的信息。以python爬虫为例&#xf…

优思学院|作业标准和标准化作业有何区别?傻傻搞不清?

作业标准和标准作业是两个在生产和制造环境中具有重要意义的概念。尽管它们看似相似&#xff0c;但实际上它们在定义、目的和实施方法上存在显著差异。本文将探讨作业标准和标准作业的区别&#xff0c;以及它们在工作场所中的作用和重要性。 1. 引言 在制造领域中&#xff0c…

JDBC小记——SQL注入及预编译操作对象、批处理

目录 SQL注入 预编译操作对象 自定义JDBC工具类 1.创建配置文件 2.配置 3.在工具类中使用配置文件 批处理 注意事项 SQL注入 SQL注入是黑客对数据库进行攻击的常用手段之一&#xff0c;他们拼接一些恶意的sql语句&#xff0c;来获取他们想要的数据。 例&#xff1a; s…