当前位置: 首页 > 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.lryc.cn/news/612235.html

相关文章:

  • 【后端】java 抽象类和接口的介绍和区别
  • Unity打造塔科夫式网格背包系统
  • Enhancing Long Video Question Answering with Scene-Localized Frame Grouping
  • 根据经纬度(从nc格式环境数据文件中)提取环境因子
  • 基于Hadoop的股票大数据分析可视化及多模型的股票预测研究与实现
  • 2025年测绘程序设计模拟赛一--地形图图幅编号及图廓点经纬度计算
  • DAY32打卡
  • golang的map
  • 哈尔滨云前沿-关于物理服务器
  • 关于 idea 里 properties 文件的中文乱码问题
  • get请求中文字符参数乱码问题
  • 软件定义汽车 --- 电子电气架构的驱动
  • Vue Vant使用
  • AI大语言模型如何重塑软件开发与测试流程
  • 初识神经网络01——认识PyTorch
  • 需求EAV模型的优化与思考
  • PCL 平面特征点提取
  • 一、Istio基础学习
  • Next.js 服务器组件与客户端组件:区别解析
  • [FOC电机控制]-高速刹车机制
  • 滑动窗口相关题目
  • C++ 运算符重载:避免隐式类型转换的艺术
  • 利用DeepSeek编写go语言按行排序程序
  • DAY 37 早停策略和模型权重的保存
  • 线程互斥与同步
  • 周鸿祎:AI 时代安全智能体,能否重塑数字安全格局?
  • 一个AI硬件项目经理的PMP实战笔记
  • OpenObserve非sql模式 query editor 中 xx like ‘|’报错如何处理
  • 芯片封装(DIP、SOP、QFP、QFN、BGA、LGA、PGA)
  • 从零开始的云计算生活——第三十八天,避坑落井,Docker容器模块