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

TypeScript 元组类型精简知识点

一、元组基础特性

  • 定义:TypeScript 特有类型,允许数组成员类型不同(与数组的“同类型成员”特征区分)。
  • 声明方式:成员类型写在方括号内,需显式声明(否则会被推断为联合类型数组)。
    示例:const t: [string, number, boolean] = ['a', 1, true]
  • 与数组的区分
    • 数组:类型写在方括号外(number[]),成员类型必须相同。
    • 元组:类型写在方括号内([number]),成员类型可不同。

二、元组成员规则

  • 可选成员:尾部成员可加 ? 表示可选(可选成员必须在必选成员之后)。
    示例:type Tuple = [number, string?](可包含 1 或 2 个成员)。
  • 不定成员:用扩展运算符(...)表示不限数量的成员,... 后需跟数组/元组。
    示例:type NamedNums = [string, ...number[]](第一个成员为字符串,后续为任意数量数值)。
    • ... 可位于元组任意位置(头部、中部、尾部)。
  • 成员命名:可添加说明性名称(无实际作用),格式为 名称: 类型
    示例:type Color = [red: number, green: number, blue: number]

三、只读元组

  • 声明方式
    1. readonly [类型1, 类型2]
    2. Readonly<[类型1, 类型2]>(泛型工具类型)。
  • 特性:禁止修改、新增、删除成员。
  • 类型关系:普通元组是只读元组的子类型(普通元组可赋值给只读元组,反之不行)。
    • 示例:let t: [number] = [1]; let rt: readonly [number] = t 正确;t = rt 报错。

四、成员类型与数量推断

  • 成员类型读取
    • 通过索引:type Tuple = [string, number]; type T = Tuple[1](返回 number)。
    • 所有成员类型:Tuple[number](返回联合类型,如 string|number)。
  • 成员数量推断
    • 无可选成员和 ... 时,TypeScript 可确定元组长度(如 [number, number] 长度固定为 2)。
    • 含可选成员时,推断可能的长度范围(如 [number, number?] 长度为 1|2)。
    • ... 时,无法推断长度,元组会被当作数组处理(成员数量不确定)。

五、扩展运算符应用

  • 数组传参问题:数组用 ... 传参时,因成员数量不确定可能报错(如函数需固定参数个数)。
  • 解决方法
    1. 将数组声明为固定长度元组:const arr: [number, number] = [1, 2]
    2. 使用 as const 断言:const arr = [1, 2] as const(推断为只读元组 readonly [1, 2])。
http://www.dtcms.com/a/318455.html

相关文章:

  • 网络拨测和业务拨测是什么意思
  • 【Create my OS】8 文件系统
  • 【Go】新版GORM自动字段映射规则
  • 基于深度学习的医学图像分析:使用Diffusion Models实现医学图像生成
  • word2vector细致分解(CBOW, SKIP_GRAM, 层次soft Max, 负采样)
  • 8月6日星期三今日早报简报微语报早读
  • 机器学习 朴素贝叶斯
  • 园区误报率↓79%!陌讯多模态融合算法在智慧环卫越界识别的工程实践
  • 防火墙及firewall工具详解
  • AI增强的软件测试工具
  • 解决pytorch-lightning1.6.0安装时自动下载最新的pytorch方法
  • 《深入浅出Embedding》这本书
  • 高等数学(工本)----00023 速记宝典
  • <2> Elasticsearch大规模数据迁移实战:从内存暴涨到优化策略
  • 令牌桶限流算法
  • 《动手学深度学习》读书笔记—9.3深度循环神经网络
  • 数字图像处理(冈萨雷斯)第三版:第四章——空间滤波与频域滤波(平滑与锐化)——主要内容和重点
  • SQL166 删除索引
  • 一篇认识synchronized锁
  • JAVA--流程控制语句
  • Android—服务+通知=>前台服务
  • shell基础之EOF的用法
  • 译 | 在 Python 中从头开始构建 Qwen-3 MoE
  • windos安装了python,但是cmd命令行找不到python
  • 012 网络—基础篇
  • 机器学习算法系列专栏:逻辑回归(初学者)
  • flex布局:容器的justify-content属性
  • Python训练Day35
  • Python在生物计算与医疗健康领域的应用(2025深度解析)
  • 局域网内某服务器访问其他服务器虚拟机内相关服务配置