TypeScript 中的常用类型声明大全

news2024/11/25 7:34:29

文章目录

  • 基本数据类型
    • 1.number类型
    • 2.String 类型
    • 3. Boolean 类型
    • 4. undefined 类型
    • 5.Null类型
    • 6.Symbol类型
    • 7.BigInt类型
  • 引用数据类型
    • 8.Array 类型
    • 9.Object 类型
  • TS 新增特性数据类型
    • 4.联合类型
    • 5.字面量类型
    • 6.Any 类型
    • 7.unknown 类型
    • 8.Void 类型
    • 9.never 类型
    • 10.对象类型
    • 12 tuple (元组)
    • 13.enum (枚举)

上一章节,我们介绍了什么是TS,以及TS的应用场景。本章节将给大家介绍,在TypeScript 中,常用的数据类型声明,有我们熟悉的 基本数据类型,也有,一些TypeScript 新增的一些,语法规范类型。出发吧…

![在这里插入图片描述](https://img-blog.csdnimg.cn/169f1bc10de245c8908e4a3252489449.png

基本数据类型

1.number类型

let variable: number = 123   //为变量 指明 类型,后续,如果要对此变量 从新赋值,则赋值数据类型只能为声明时的类型。
variable = 789
console.log(variable);


let a: number = 10; //十进制
//下面这些赋值也属于 number
a = 0b1010; //二进制
a = 0o12;  //八进制 
a = 0xa;   //十六进制
a = NaN;
a = Infinity;


2.String 类型

let variable: string = "字符串"
variable = "前端开发"
console.log(variable);

3. Boolean 类型

let variable: Boolean = false;
variable = true
console.log(variable);

函数:同样的,也可以给函数限制 接受形参的类型和,限制返回值的数据类型

function num(a: number, b: number): number {
    return a + b
}
let type = num(12, 123)
console.log(type);

小提示:如果 声明变量和赋值同时进行,TS可以自动进行类型判断,以你给他的初始数据类型为,变量数据类型。


4. undefined 类型

let u: undefined = undefined

5.Null类型

let n: null = null

undefined 和 null ,还可以作为其他类型的子类型,把 undefined 和null 赋值给其他类型的子类型。如:

let u: number = undefined
let s: string= undefined

注意:实际开发中,undefined 和 null 两种类型,使用场景并不多

6.Symbol类型

let s: symbol = Symbol(789456)

7.BigInt类型

let b: bigint = BigInt(4586541531351356);

在这里插入图片描述


引用数据类型

8.Array 类型

 let arr:string[]
 arr=["张三","李四"]
 
 let arr: number[]
 arr = [1, 2]
 
 //泛型写法
let arr: Array<number>

9.Object 类型

object 表示非原始数据类型。除了 number,string,boolean 类型之外的其他类型。

let obj: object = {}

//不支持 number,string,boolean 类型字面量直接赋值,但是可以 通过下面的 
//new 实例化,或者 直接赋值 类 定义
obj = null;
obj = undefined;
obj = []
obj = new Number();
obj = Number
obj = new String();
obj = String

TS 新增特性数据类型

4.联合类型

let variable: string | number
variable = 123
variable = "asdfassf"
variable = false         //XXXXXX.这里不能赋值为 Boolean  值,因为声明变量时,指定了类型范围

5.字面量类型

let variable: "男" | "女"
variable = "男"
variable = "女"
variable = "你好呀"        //XXXXXX  这里也会报错,因为声明时,也指定了,赋值范围,只能为  “男”或“女” 的字符串

6.Any 类型

any 相当于就是TS 关闭了数据类型检查,可以赋值任意类型,但是TS 中,不建议使用。

let variable: any

variable = 123
variable = "字符串"
variable = false
variable = {}

type name = "vue" | "react"

let a: name = "react"; //a 只能是字面量值中的其中一个

警告:当any 类型的变量,当成参数赋值给其他类型变量的时候,如果,两个变量类型不匹配,也不会报错,会埋下安全隐患!

let variable: any
variable = 123

let str: string
str = variable
console.log(str);   //不会报错

7.unknown 类型

unknown 类型和any 同理,只是会在,两个变量互相赋值的时候,会做类型校验,相当于是any 的 安全锁

8.Void 类型

void 类型多用于函数,,表示没有任何返回值的函数,只要有返回值,就会报错

function fn():void{
    return undefined
}
function fn():void{
    return 
}

9.never 类型

同 void ,表示完全没有返回值,连 undefined 都不能返回

function fn():never{
    throw new Error('终止')
}

10.对象类型

let obj: { name: string, }
obj = { name: "张三" }    //声明一个对象,给对象赋值的时候,有且只能有,name 定义好的字段,且类型必须相同

let obj: { name: string, age?: number }     //定义参数时,在后面加上 ?  代表这是非必要参数,赋值时,可以不用传
obj = { name: "张三" }



let obj: { name: string, [key: string]: any } 
obj = { name: "张三", age: 123 }        //这样定义代表,除name, 必须要 赋值外,其他的,任意key的值,也可以是 任意 类型。

//定义函数结构 类型
let fn: (a: number, b: number) => number

12 tuple (元组)

let arr: [number, string]  // 固定长度的数组,

//给数组赋值的的时候,类型的位置以及参数的个数要一一对应
arr = [123, "字符串"]         

arr.push(123)   //但是当调用数组身上的方法,进行动态传值的时候,不用限制特定的类型顺序和长度,
arr.push("字符串")   //只需要遵循,所添加的值类型必须为元组中所定义的。,因为在使用方法添加数据的时候,会把我们的定义为联合类型,从而规避类型检查。


13.enum (枚举)

enum num {   //创建一个枚举
    names = "张三",
    age = 123
}

let template: { name: num, age: num }

template = { name: num.names, age: num.age }

console.log(template);

总结:

本章节主要介绍了在 TypeScript 中,开启强制数据类型时的一些使用语法,,强制数据类型,也是TS 的初始概念,,本章节主要就介绍这么多了。下一章节我们将继续探索 TS的更多语法特性。


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

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

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

相关文章

基于linux下的高并发服务器开发(第三章)- 3.11 读写锁

读写锁的类型 pthread_rwlock_t int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); int pthread_rwlo…

macOS 下使用 brew 命令安装 Node.js

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

iOS内存管理--内存的分区

内存分配区域 iOS程序内存分为5个区域 栈区&#xff0c;堆区&#xff0c;BSS&#xff0c;全局变量&#xff0c;代码区 五个区域有两种分配时间 运行时分配&#xff1a;栈区&#xff0c;堆区 栈区&#xff1a;局部变量&#xff0c;函数参数&#xff08;形式参数&#xff09;&…

Hadoop概念学习(无spring集成)

Hadoop 分布式的文件存储系统 三个核心组件 但是现在已经发展到很多组件的s 或者这个图 官网地址: https://hadoop.apache.org 历史 hadoop历史可以看这个: https://zhuanlan.zhihu.com/p/54994736 优点 高可靠性&#xff1a; Hadoop 底层维护多个数据副本&#xff0c;所…

[C初阶]循环和分支语句

目录 if...else语句 ​编辑 易犯错误 打印100以内的奇数 switch...case语句 输出星期 循环语句 对比判断 1.break终止循环 2.continue 读取字符 缓冲区读取 只输出数字字符 for循环 do...while循环 n的阶乘求和 循环实现动态打印 猜数字游戏【总结】 goto ​…

C++的各种用法展示

&#xff43;&#xff0b;&#xff0b;与数学典型算法的结合 阿姆斯特朗数 // A number is called as Armstrong number if sum of cubes of digits of number is // equal to the number itself. // For Example 153 is an Armstrong number because 153 153. #include <…

K8S初级入门系列之十二-计算资源管理

一、前言 K8S集群中着这各类资源&#xff0c;比如计算资源&#xff0c;API资源等&#xff0c;其中最重要的是计算资源&#xff0c;包括CPU&#xff0c;缓存&#xff0c;存储等。管理这些资源就是要在资源创建时进行约束和限制&#xff0c;在运行时监控这些资源的指标&#xff0…

[23] HeadSculpt: Crafting 3D Head Avatars with Text

paper | project 本文主要想解决&#xff1a;1&#xff09;生成图像的不连续问题&#xff1b;2&#xff09;3D修改中的保ID问题。针对第一个问题&#xff0c;本文引入了Landmark-based ControlNet特征图和<back-view>的text embedding&#xff1b;针对第二个问题&#x…

Python 算法基础篇:插入排序和希尔排序

Python 算法基础篇&#xff1a;插入排序和希尔排序 引言 1. 插入排序算法概述2. 插入排序算法实现实例1&#xff1a;插入排序 3. 希尔排序算法概述4. 希尔排序算法实现实例2&#xff1a;希尔排序 5. 插入排序与希尔排序的对比总结 引言 插入排序和希尔排序是两种常用的排序算法…

java后端导出前端展示

效果图 前端代码 exportExcelAll(){window.location.href getBaseUrl() Action/excelDataAll?happenDatethis.params.happenDate;},后端代码 try{Workbook workbooknew XSSFWorkbook();//创建sheetSheet sheet1workbook.createSheet("结果总数拦截记录");//写入…

第一百一十二天学习记录:数据结构与算法基础:循环链表和双向链表以及线性表应用(王卓教学视频)

循环链表 带尾指针循环链表的合并 双向链表 单链表、循环链表和双向链表的时间效率比较 顺序表和链表的比较 链式存储结构的优点 1、结点空间可以动态申请和释放&#xff1b; 2、数据元素的逻辑次序靠结点的指针来指示&#xff0c;插入和删除时不需要移动数据元素。 链式存储…

【pytho】request五种种请求处理为空和非空处理以及上传excel,上传图片处理

一、python中请求处理 request.args获取的是个字典&#xff0c;所以可以通过get方式获取请求参数和值 request.form获取的也是个字典&#xff0c;所以也可以通过get方式获取请求的form参数和值 request.data&#xff0c;使用过JavaScript&#xff0c;api调用方式进行掺入jso…

[数据结构 -- C语言] 二叉树(BinaryTree)

目录 1、树的概念及结构 1.1 树的概念 1.2 树的相关概念&#xff08;很重要&#xff09; 1.3 树的表示 2、二叉树的概念及结构 2.1 概念 2.2 特殊二叉树 2.3 二叉树的性质&#xff08;很重要&#xff09; 2.4 练习题 2.5 二叉树的存储结构 2.5.1 顺序存储 2.5.2 链…

Windows10 下 Neo4j1.5.8 安装教程

前言 Neo4j 是一个高性能的、NOSQL 图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。基于磁盘的、具备完全的事务特性的 Java 持久化引擎&#xff0c;这里就不把他和常用关系型数据库做对比了。因为篇幅有限&#xff0c;我这里也是第一次使用&#xff0c;所以以…

windows安装cmake快速教程

1、下载cmake cmake官网直直接下载速度都很慢&#xff0c;可以到点击下载地址进行下载。 点击下载地址进去之后&#xff0c;可以看到有很多的版本&#xff0c;这里根据自己的需要选一个版本即可&#xff08;建议不要选择太早的版本&#xff09;&#xff0c;我这里选择的3.22版…

【Python】串口通信-与FPGA、蓝牙模块实现串口通信(Python+FPGA)

&#x1f389;欢迎来到Python专栏~与FPGA、蓝牙模块实现串口通信 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文中出现错误&#…

基于Java+SpringBoot+vue前后端分离校园周边美食探索分享平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

SpringCloud nacos 集成 feign 实例

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

【运维工程师学习七】DNS底层原理及搭建自己的DNS服务器

【运维工程师学习七】DNS底层原理及搭建自己的DNS服务器 0、前言1、域名&#xff08;Domain&#xff09;的由来2、域名&#xff08;Domain&#xff09;的级别3、域名&#xff08;Domain&#xff09;的命名规则4、域名&#xff08;Domain&#xff09;的后缀有哪些5、域名&#x…

[QT编程系列-32]:科学计算 - QT支持的科学计算库

目录 第1章 QT中如何支持科学计算&#xff1f; 1.1 QT没有专门的科学计算库 1.2 QT没有专门的数学运算库 1.3 QT没有数字信号DSP处理库 1.4 QT没有类numpy库 1.5 QT支持的数学运算 第2章 QT数学库详解 2.1 QtMath 2.2 QVector 2.3 QMatrix 第1章 QT中如何支持科学计算…