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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值