当前位置: 首页 > news >正文

TypeScript开发基础(3)——复合数据类型

数组、元组、枚举、对象、接口等具有引用和复合特征,属于复合数据类型。

1. 数组类型

数组有一个根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。

(1)数组的定义

let numarr:number[] = [1,2,3];//定义数值型数组 let names:string[] = ["apple","banana","cherry"];//定义字符串数组

(2)数组的常见操作方法

  • ‌concat()‌:连接一个或多个数组,并返回新数组。例如,[1, 2].concat([3, 4])结果为[1, 2, 3, 4]。 ‌
  • ‌push()‌:向数组末尾添加一个或多个元素,并返回新长度。例如,[1, 2].push(3)后数组变为[1, 2, 3]。 ‌
  • ‌pop()‌:删除数组最后一个元素,并返回该元素。例如,[1, 2, 3].pop()返回3,数组变为[1, 2]。 ‌
  • ‌slice(start, end)‌:提取数组的一部分,返回新数组。支持负索引,例如slice(-2)表示从末尾开始提取。 ‌
  • ‌map()‌:通过函数处理每个元素,并返回新数组。例如,[1, 2, 3].map(x => x * 2)结果为[2, 4, 6]。 ‌
  • ‌filter()‌:返回符合指定条件的元素组成的新数组。例如,[1, 2, 3, 4].filter(x => x > 2)结果为[3, 4]。 ‌
  • ‌forEach()‌:遍历数组每个元素并执行回调函数,但不返回新数组。 ‌
  • ‌reduce()‌:将数组元素计算为一个值(从左到右)。例如,[1, 2, 3].reduce((a, b) => a + b)结果为6。 ‌
  • ‌sort()‌:对数组元素进行排序,可自定义比较函数。例如,按数值大小排序:[3, 1, 2].sort((a, b) => a - b)。 ‌
  • ‌reverse()‌:反转数组中元素的顺序。例如,[1, 2, 3].reverse()结果为[3, 2, 1]。
    let numarr:number[] = [1,2,3]; let names:string[] = ["apple","banana","cherry"]; numarr.push(4); numarr.unshift(0); names.push("orange"); names.unshift("grape"); console.log(numarr); console.log(numarr.concat([5,6])); console.log(numarr.slice(1,3)); console.log(numarr.reduce((a,b)=>a+b)); console.log(names); names.reverse(); console.log(names);

2. 元组类型

元组是一种特殊类型的数组,允许在固定长度的集合中存储不同类型的元素,每个位置都有明确的类型和顺序。‌ 与普通数组(元素类型相同且长度可变)不同,元组适用于表示结构化数据,如函数返回多个值或坐标点。‌

let myTup: [string, number] = ["tom", 18]; type Point = [number, number?, number?]; console.log(myTup); console.log(myTup[0]); let x: Point = [10]; // 一维坐标点 let xy: Point = [10, 20]; // 二维坐标点 let xyz: Point = [10, 20, 10]; // 三维坐标点 console.log(x); console.log(xy); console.log(xyz);

3. 枚举类型

枚举(Enum)是一种强大的特性,它允许你为数值集合中的成员提供一个友好的名字。枚举可以是有数字或字符串的成员,这使得代码更易于理解和维护。

(1)数字枚举

enum Direction { Up, Down, Left, Right } console.log(Direction.Up); // 输出: 0 console.log(Direction.Down); // 输出: 1 console.log(Direction[0]); // 输出: "Up"

(2)字符串枚举

enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT" } console.log(Direction.Up); // 输出: "UP" console.log(Direction["UP"]); // 输出: 0

4. 对象类型

在TypeScript中,可以使用对象字面量语法创建一个对象。该语法是用一对花括号{}将属性和函数包裹起来,而属性和函数则以键—值对的形式进行组织,这种间接形式常用于创建对象。

let user={ id: 1001, name: "张三", password: "123456" }

5. 接口类型

TypeScript 中的接口(Interface)是一种用于定义对象结构的契约,它描述了对象应该包含的属性和方法,确保类型安全。接口是面向对象编程中的重要概念,常用于约束类、函数或对象的形状。‌

interface User { id: number; name: string; password: string; email: string; department: string; role: string; isActive: boolean; joinDate: string; } let user: User = { id: 1, name: "张三", password: "123456", email: "zhangsan@example.com", department: "软件开发部", role: "管理员", isActive: true, joinDate: "2022-01-15", };

对象与接口是面向对象编程的重要概念,在后面面向对象编程中还会详细讲解。

http://www.cnnetsun.cn/news/65999.html

相关文章:

  • 18、日期和时间的格式化、解析及时间区域的使用
  • VisionPro CogIPOneImageTool1 工具超详细解释(含内部功能全解析)
  • VisionPro CogIDTool 工具超深度详解(技术细节 + 实战配置版)
  • 让 BI 拥有‘领域大脑’:智能 BI 如何实现 AI 级精准数据查询
  • 提示工程架构师的战略规划:提示系统生命周期管理
  • 条形码识别与定位:基于FCOS框架的多类型条码检测与识别技术详解
  • AutoGPT能否用于学术文献综述?研究辅助工具测评
  • 如何用AutoGPT实现任务全自动执行?深度解析开源大模型能力
  • Mapbox GL JS 核心表达式:`in` 包含判断完全教程
  • Web3双核引擎:当AI量化金融大脑,遇见DAO社交生态灵魂
  • CEX开发困局:当达普韦伯为交易所注入“数字灵魂”
  • AutoGPT镜像集成指南:如何嵌入现有业务系统?
  • AutoGPT项目活跃度分析:GitHub星标增长趋势
  • AutoGPT能否生成短视频脚本?内容创作新方式
  • 超越ChatGPT!教你开发能自主完成复杂任务的AI智能体,代码开源
  • 震惊!AI Agent智商税?Google最新研究:盲目堆叠智能体可能导致性能暴跌70%
  • AI Agent“杀疯了“!大模型时代,你的编程技能该“内卷“还是“躺平“?
  • 【AI神器】Claude Code四大神器全解析!小白程序员也能秒变效率王者,Command/Skill/Agent/MCP一次搞懂!
  • AutoGPT能否接入企业微信?组织内协作场景落地
  • 震惊!原来AI编程开发这么简单:LLM、Agent与Workflow三兄弟协同工作原理大揭秘,小白也能秒变AI达人!
  • 图灵奖大佬怒怼大模型:LLM不是通向AGI的路径!下一波AI革命竟是洗碗倒水?程序员必看!
  • 从“十五五”规划建议看数字孪生重点发展方向
  • Qwen3-32B中文理解能力为何如此出色?内部机制揭秘
  • BPAdaboost模型:以BP神经网络为‘弱‘分类器的强分类器构建方法
  • 16、科学计算实用指南:从矩阵运算到生物信息学
  • LobeChat文件上传功能怎么用?处理PDF、Word超简单
  • BTC波动加剧之际,投资者如何选择可靠的数字资产观察平台?
  • 基于springboot的水果购物商城管理系统的设计与实现_5n1fg985
  • 计算机毕业设计springboot家庭理财系统 基于 SpringBoot 的个人家庭资产管理系统 SpringBoot+Vue 的智能化家庭财务分析与规划平台
  • 论文写作新范式:基于9款AI工具的实战评测,开题报告与草稿高效产出