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

TypeScript 数组类型精简知识点

一、数组类型基础

  • 核心特征:所有成员类型必须相同,成员数量动态可变(可空、可无限扩展)。
  • 两种声明方式
    1. 成员类型 + 方括号:let arr: number[] = [1, 2, 3]
      • 复杂类型需用括号包裹:let arr: (number|string)[](避免 | 优先级问题)。
    2. 泛型写法:let arr: Array<number> = [1, 2, 3]
      • 复杂类型更易读:Array<number|string>
  • 任意类型数组any[](不推荐,失去类型检查意义)。

二、数组的类型推断

  • 空数组初始值:推断为 any[],后续添加成员会自动更新类型(如先推 any[],加 number 后推 number[],再加 string 后推 (number|string)[])。
  • 非空数组初始值:根据初始成员类型推断,且后续不可添加其他类型成员(如 const arr = [123] 推断为 number[],添加 string 会报错)。

三、只读数组与 const 断言

  • 只读数组声明
    • 基础写法:readonly number[](禁止修改、新增、删除成员)。
    • 泛型写法:ReadonlyArray<number>Readonly<number[]>readonly 不可直接修饰 Array<T>)。
  • 类型关系number[]readonly number[] 的子类型(子类型可赋值给父类型,反之不行)。
    • 示例:let a: number[] = [1]; let b: readonly number[] = a 正确;a = b 报错。
  • const 断言const arr = [0, 1] as const 推断为只读数组,成员不可修改。
  • 注意:只读数组作为参数传入普通数组类型的函数时会报错,需用类型断言(如 getSum(arr as number[]))。

四、多维数组

  • 声明方式:用嵌套方括号表示,最内层为成员类型。
    示例:let multi: number[][] = [[1, 2], [3, 4]](二维数组,底层成员为 number)。

五、数组成员类型读取

  • 通过索引类型读取:type Names = string[]; type Name = Names[0]Names[number],均返回 string
http://www.dtcms.com/a/318646.html

相关文章:

  • 文本编码扫盲及设计思路总结
  • Mongodb入门介绍
  • [Python 基础课程]学生语文成绩录入和查询需求
  • [假面骑士] 555浅谈
  • AI大语言模型如何重塑软件开发与测试流程
  • Linux操作系统启动项相关研究与总结
  • 高速信号设计之 UPI2.0 篇
  • Spring Security 框架深度集成与开发指南
  • 如何设计一个开放授权平台?
  • 初识神经网络01——认识PyTorch
  • k8s的存储之statefulset控制器
  • 【MyBatis新手避坑】详解 `Could not find resource ...Mapper.xml` 错误
  • Class30数据增广
  • Leetcode刷题营:字符串相关--第35,36题
  • 深度探索:非静态内部类不能定义 static 成员属性和方法 及 静态内部类的必要性
  • 若依前后端分离版学习笔记(六)——JWT
  • K8S、Docker安全漏洞靶场
  • Go语言“fmt”包详解
  • KNN算法:从原理到实战应用
  • SDIO三种触发枚举的方式
  • Python高级排序技术:非原生可比对象的自定义排序策略详解
  • 第14届蓝桥杯Scratch选拔赛初级及中级(STEMA)真题2022年11月27日
  • Java面试宝典:类加载器分层设计与核心机制解析
  • 栈与队列的基本逻辑
  • ToonMe:将照片转换为卡通风格的艺术作品
  • docker run 入门到进阶:容器启动背后的门道
  • 嵌入式开发入门—电感器
  • CASA模型原理详细解析
  • 【unity 中的RectTransform组件中的`RectTransform.sizeDelta理解】
  • Unity3D水下场景与游泳系统开发指南