首页 > 其他分享 >TypeScript入门到精通——TypeScript类型系统基础——数组类型

TypeScript入门到精通——TypeScript类型系统基础——数组类型

时间:2023-10-07 10:37:15浏览次数:42  
标签:TypeScript 入门 只读 元素 泛型 数组 类型

数组类型

  数组是十分常用的数据结构,它表示一组有序元素的集合。在 TypeScript中,数组值的数据类型为数组类型。

一、数组类型定义

  TypeScript 提供了以下两种方式来定义数组类型:

    • 简单数组类型表示法
    • 泛型数组类型表示法

1.1、简单数组类型表示法

在TypeScript中,你可以使用数组类型表示法来定义一个数组的类型。这是一个基础的方法,直接定义数组元素的类型。

例如,如果我们想要定义一个只包含字符串类型元素的数组,我们可以这样做:

let strArray: string[] = ["Hello", "World"];

在这个例子中,string[]是一个数组类型,它包含的元素都是string类型。

1.2、泛型数组类型表示法

  TypeScript也支持泛型数组类型的表示法。这种类型的数组可以接受的元素类型更为广泛。在泛型数组类型中,我们需要提供一个类型参数,这个参数将作为数组元素的类型。

  例如,如果我们想要定义一个可以接受任何类型的元素的数组,我们可以使用any类型参数:

let anyArray: Array<any> = [1, "Hello", true, null, undefined];

  在这个例子中,Array<any>是一个泛型数组类型,它可以接受任何类型的元素。

  除此之外,我们也可以使用其他类型作为类型参数,例如对象类型、接口类型等。例如,我们可以定义一个对象数组,这个对象具有特定的属性: 

interface Person {  
    name: string;  
    age: number;  
}  
  
let people: Person[] = [  
    { name: "Alice", age: 20 },  
    { name: "Bob", age: 30 },  
];

  在这个例子中,Person[]是一个对象数组类型,它包含的元素都是Person类型的对象。每个Person类型的对象都有nameage两个属性,类型分别为stringnumber。 

1.3、简单数组类型和泛型数组类型的区别是什么

  简单数组类型和泛型数组类型的主要区别在于它们能够容纳的元素类型的范围。

  简单数组类型,如int[],它只能容纳一种特定类型的元素,即整数。如果你尝试添加其他类型的元素(如字符串或布尔值),那么在编译时将会出错。

  泛型数组类型,如Array<T>,则更为灵活。这里的                                                                        T可以是任何类型,包括简单类型(如string或number)和复杂类型(如Person或Object)。这意味着你可以将任何类型的元素添加到泛型数组中,只要这些元素符合你为T指定的类型。

  因此,你可以根据需要选择使用哪种数组类型。如果数组元素的类型是固定的,那么简单数组类型可能是更好的选择。如果需要存储多种类型的元素,或者元素类型可能是变化的,那么泛型数组类型就更为合适了。

二、只读数组

  只读数组与常规数组的区别在于,只读数组仅允许程序读取数组元素而不允许修改数组元素。

  TypeScript 提供了以下三种方式来定义一个只读数组

1、ReadonlyArray<T>:这是TypeScript的一个内置类型,用于表示只读数组。T是数组中元素的类型。例如:

let readonlyArray: ReadonlyArray<string> = ['Alice', 'Bob'];

  在上面的代码中,readonlyArray 是一个只读字符串数组。如果你尝试修改这个数组(例如,尝试添加或删除元素),TypeScript 编译器会抛出错误。

2、readonly修饰符:从 TypeScript 3.7 开始,你可以使用readonly修饰符来定义只读数组:

let readonlyArray: ReadonlyArray<string> = readonly ['Alice', 'Bob'];

  这种方式与使用ReadonlyArray<T>的效果是相同的,但语法更简洁。

3、Readonly<T>:这是 TypeScript的一个工具类型,用于将任何类型转换为只读类型。例如:
let array: string[] = ['Alice', 'Bob'];  
let readonlyArray: ReadonlyArray<string> = Readonly(array);

  在这个例子中,Readonly(array)array转换为一个只读数组。同样地,如果你尝试修改readonlyArray,TypeScript编译器会抛出错误。

  需要注意的是,只读数组并不意味着你不能对其进行迭代或使用一些数组方法(例如mapfilter等)。它只是限制了你不能改变数组的结构(例如添加或删除元素)。

 

 

 

标签:TypeScript,入门,只读,元素,泛型,数组,类型
From: https://www.cnblogs.com/zuoyang/p/17745694.html

相关文章

  • Oracle数据库升级PostgreSQL 后的踩坑记录(二)之date类型处理
    踩坑二:date类型处理背景:因为业务需求,需要整个项目除了适配oracle和mysql后还需要适配PostgreSQL,在此背景下就出现了一系列的问题。接系列一databaseId映射成oracle之后问题又随之而来,由于从oracle数据库的date类型映射成postgreSQL的timestamp字段又出现了一些查询报错的问题,我......
  • 根据以下代码所生成的数据 请使用python 机器学习 研究不同宽度,厚度,重量,车间温度,
    #对分类变量进行独热编码data=pd.get_dummies(data,columns=['Annealing_Type','Cooling_Type'])#划分训练集和测试集fromsklearn.model_selectionimporttrain_test_splitX=data.drop(['Material_ID','Measurement_Time','Tempera......
  • Julia的变量和数据类型
    变量Julia作为动态语言,它的变量可以随时被定义为任意类型。变量名命名规则变量名需以字母或者下划线开头变量名区分大小写类名要使用大驼峰命名法函数名和宏名使用全小写修改参数的函数结尾使用叹号!此外还可以使用Unicode字符来命名,这其中就包括各国文字,例如中文、希......
  • 01-Shell脚本入门
    1.介绍1.1疑问linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等?答:使用linux的内核操作计算机的硬件1.2Shell介绍通过编写Shell命令发送给linux内核去执行,操作的就是计算机硬件.所以Shell命令是用户操作计算机硬件的桥梁Shell是命令,类似于windows系统Dos命令......
  • typescript: Adapter pattern
     /***Adapterpattern适配器是一种结构型设计模式,它能使不兼容的对象能够相互合作。*file:Adapterts.ts***//***TheTargetdefinesthedomain-specificinterfaceusedbytheclientcode.*/classTarget{publicrequest():string{......
  • Redis入门
    【学习教程】:【黑马程序员2023最新Java项目实战《苍穹外卖》,最适合新手的SpringBoot+SSM的企业级Java项目实战】https://www.bilibili.com/video/BV1TP411v7v6/?p=52&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549eRedis入门基本介绍Redis是一个基于内存......
  • typescript: Singleton Pattern
     /***file:Singletonts.ts*SingletonPattern单例是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。*TheSingletonclassdefinesthe`getInstance`methodthatletsclientsaccess*theuniquesingletoninstance.......
  • webpack - 构建支持TypeScript的React应用
    1.初始化package.json创建项目文件夹mkdirwebpack-react-tscdwebpack-react-ts初始化项目package.jsonyarninit-y{"name":"webpack-react-ts","version":"1.0.0","main":"index.js","license&......
  • 视频直播源码,js判断上传图片格式类型、尺寸大小
    视频直播源码,js判断上传图片格式类型、尺寸大小 /判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")ret......
  • 【C语言入门】快速排序函数的应用
    快速排序函数qsortvoidqsort(void*base,typenitems,typesize,int(cmp)(constvoid*p1,constvoid*p2));参数说明:base  指针要排序的数组的首元素指针nitems  数组元素的总个数size  数组中每一个元素的字节大小cmp  函数指针(用来比较两个元素的函数)比......