ts 类型分类

news2024/9/23 21:27:06

目录

01 ts 相关指令

02 类型声明空间与变量声明空间

03 类型注解和类型推断

04 类型分类 , 联合类型与交叉类型

05 never类型  any类型 和unknown类型


01 ts 相关指令

        全局安装 typescript 模块

                npm i -g typescript

        安装完成之后 可以将ts文件转换成js文件 

                tsc  xxx.ts 

         如果想要对转换的js文件进行实时转换 需要添加一个-w 参数

                tsc xxx.ts  -w

        ts 是默认全局环境下的,所以和其他文件夹中内容由同名变量会冲突

        需要把ts文件编程一个模块化的文件 那么变量就只能在这个模块中起作用就不会冲突

        export { }   //导出一个对象

        如果不想采用默认的编译方式 可以通过修改配置文件的方式改变一些默认设置

        配置文件叫做 tsconfig.json 

        通过 tsc  --init 可以自动创建tsconfig.json文件

        

02 类型声明空间与变量声明空间

        js中只有变量声明空间

        但ts中不仅存在变量声明空间 还存在类型声明空间

        let a="hello"  //这是变量声明空间

        type A =string  //这是类型声明空间 一般使用大写

        不能将这两个空间混合编写

                例如: type A=number ; let a =A  //这样是不可以的

        特殊情况:

                类在ts中即是变量声明空间,也是类型声明空间

                例:  class Foo{}

                        let a=Foo;

                        type A=Foo;

03 类型注解和类型推断

        将变量声明空间和类型声明空间联系到一起 需要通过类型注解来实现

        类型注解:    

                通过将变量声明空间和类型声明空间结合到一起的操作就叫做类型注解

                具体的语法就是通过冒号连接在一起

                let a : string = "helllo"

                let A = string

                let a : A = "hello"

        类型推断:   ts 自动完成的类型注解的过程

                ts会强制类型 进行自动的类型判断就叫做类型推断

               

        04 类型分类 , 联合类型与交叉类型

                类型分为: 基本类型 , 对象类型 , ts新增类型

                        基本类型: string  number  boolean  null  undefined  symbol  bigint

                        对象类型: 数组[ ]   对象{ }  函数 function( ){ }

                        ts新增类型: any  never void unknown enum

                联合类型:

                        类型之间进行或的操作

                        let a : string | number | boolean ="hello"

                交叉类型:

                        类型之间进行与的操作

                        交叉类型很少是基本类型 大多都是对象类型

                        

        05 never类型  any类型 和unknown类型

                never类型:

                        never类型表示不存在的值的类型

                        当一个值不存在的时候就会被自动类型推断成never类型

                        let a:number&string=123

                        以上代码报错

                        自动推断出来a时候nver类型 这种写法123不可能即是number又是string

                        这个never类型都是自动推断出来的

                        利用never类型可以实现判断参数是否都被使用

                any类型:

                        any类型表示任意类型

                        unknown类型表示的是未知类型  是any类型对应的安全类型

                        any表示任意类型 那么定义的变量可以随意修改它的类型 这样有问题

                        设置为any类型之后 就是ts不再进行类型强制 和js没有区别了

                        所以any类型相当于是ts中的后门 不到万不得已不要使用 如果真的有这种需求

                        可以采用any类型对应的unknown类型类定义

                       any类型不进行任何检测 但是unknown使用的时候ts默认会进行检测

                        unknown 类型让程序使用的时候更严谨

                        我们使用ts的时候最好主动告诉ts这是一个什么类型

                    

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

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

相关文章

为什么越来越多的人选择开放式耳机?平价高品质蓝牙耳机推荐

越来越多的人选择开放式耳机,主要是因为其具有多方面的优势,具体如下: 佩戴舒适度高:开放式耳机不入耳,不堵塞耳道,避免了对耳道的压迫和摩擦,长时间佩戴也不易产生闷热感和不适感。例如&#x…

windows安装git

windows安装git 1.通过git官网下载 官网:https://git-scm.com/downloads 2.安装git (1)找到下载到的文件,进行双击进行安装 (2)安装使用说明点击Next (3)选择自己的安装地址&a…

大屏可视化:阿里 DataV 大屏怎么做自适应的?

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 阿里 DataV 大屏是一款功能强大的数据可视化应用搭建工具,由阿里云提供,旨在帮助用户通过图形化的界面轻松搭建专业水准的可视化应用。 下面我们一起看下 DataV 大屏 是如何做自适应…

【嵌入式】uint32值写入到二进制文件中的存储详情

背景 项目预留100字节用于存储参数文件。现在有些数值一个字节表示不够,需要用4个字节。比如数值1144201745,对应的十六进制0x44332211,那么在二进制中存储是怎么样的呢?做个总结 分析 写了一个sample,把uint32_t u32Value1{0x…

【ThreadLocal源码】深入浅出ThreadLocal

【ThreadLocal源码】深入浅出ThreadLocal-CSDN博客

Linux之Prometheus

认识普罗米修斯 1、prometheus介绍 Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合, 由go语言开发。 适合监控容器平台, 因为kubernetes(俗称k8s)的流行带动了prometheus的发展。 PS:文档使用prometheus监控物理服务器。 prometheus的…

数组程序基础知识

为了处理方便,把具有相同类型的变量按有序的形式组织起来。这些同类数据元素的集合称之为数组。数组可分为数值数组、字符数组、指针数组、结构数组等。 01--一维数组 在使用数组前需要先定义: 类型说明符 数组名[常量表达式]; 类型说明符…

因 Mysql root 密码过于简单导致 Mysql 连接失败的解决方法

问题: Access denied for user ‘root’‘192.168.xx.xx’ (using password: YES) 用户“root”“192.168.xx.xx”的访问被拒绝(使用密码:YES) 解决方法: 1、使用root用户登录mysql,通过下面的命令给ro…

数据管理能力成熟度评估模型DCMM

一、引言 DCMM(Data Management Capability Maturity Assessment Model,数据管理能力成熟度评估模型)是我国首个数据管理领域国家标准(GB/T 36073-2018),由中国国家标准化管理委员会于2018年3月15日发布&am…

FreeRTOS基础入门——FreeRTOS信号量及二值信号量(十三)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

智联云采 SRM2.0 autologin 身份认证绕过漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

【王树森】RNN模型与NLP应用(4/9):LSTM模型(个人向笔记)

前言 LSTM是对Simple RNN的改进,可以避免梯度消失的问题,能够有更长的记忆力。 LSTM 1. LSTM:Conveyor Belt 过去的信息 C t − 1 C_{t-1} Ct−1​ 通过一个传输带直接输送到下一个状态 C t C_t Ct​,不会发生太大的变化,由此…

激活函数 Sigmod 及其导数

文章目录 1. Sigmod 函数2. 取值3. 图像4. 导数 1. Sigmod 函数 Sigmod 函数是神经网络中最常用的激活函数之一,其形式如下: sigmod ( x ) f ( x ) 1 1 e − x . \text{sigmod}(x) f(x) \frac{1}{1 e^{-x}}. sigmod(x)f(x)1e−x1​. 2. 取值 分…

大模型理论基础

大模型理论基础与学习路径 1.大模型的理论基础,包括深度学习、预训练语言模型和大语言模型。 2.学习大模型开发的路径,包括理论学习、实践操作和项目应用。 3.如何通过理论学习提升上限,为深入学习大模型奠定基础。 GPT模型家族技术发展 1.GP…

数据结构——堆排序

目录 引言 堆排序 1.算法思想 2.算法步骤 3.代码实现 3.1 构建堆 (1)小堆 (2)大堆 3.2 交换与调整 3.3 重复上述过程 4.复杂度分析 5.完整代码 5.1算法实现代码 5.2 示例 6.堆排序的优势 结束语 引言 本篇博客,我们将利用堆结构实现的高效排序算法…

版本控制的核心:Git中的哈希与默克尔树解析

Git是最常用的代码版本控制工具。它帮助我们跟踪代码的更改、管理代码版本,同时保证代码库的完整性和安全性。我们知道 Git 中有一些基本的操作,比如commit、merge、rebase等,但这些操作的底层机制是如何实现的呢?哈希函数和默克尔…

深度学习|模型推理:端到端任务处理

文章目录 引言端到端的能力任务与模型简介手写数字识别数据准备训练集与测试集模型介绍 推理过程前向传播权重参数推理与评估 结语 引言 通过前文「深度学习|感知机:神经网络之始」中 XOR Gate 的示例,我们知道叠加层可以增强感知机的表达能…

单向链表排序及双向链表

单向链表的优缺点 优点:存储空间没有上限,插入删除效率高 缺点:修改和查找效率低,只能单向的向后遍历后续节点,不能向前遍历前驱节点 单向链表快慢指针法查找: 链表的排序 双向链表 由于单向链表只能通…

Linux 性能调优:策略与实践

引言 随着云计算和虚拟化技术的发展,Linux 已经成为企业和个人用户的首选操作系统。Linux 性能调优不仅有助于提高系统资源利用率,还能确保应用程序的高效运行。本文将探讨 Linux 性能调优的基本原则、常用工具和方法,以及实际案例分析。 一…

go中的并发处理

. Goroutines 概念: Goroutines 是 Go 的核心并发机制。它们是由 Go 运行时管理的轻量级线程,具有比操作系统线程更少的开销。每个 goroutine 只需少量的内存(大约 2KB),并且由 Go 运行时负责调度和管理,哪怕是java发…