Typescript 数组类型 (声明方式)

直接用 [] 声明数组

  • 普通数组
const arr: number[] = [1, 2, 3, 4, 6, 9]
const arr1: string[] = ['1', '你好']
const arr2: boolean[] = [true, false, true]
const arr3: any[] = [{ name: '张三' }, 3, 'hello']

用 Array<> 声明数组

  • 普通数组
const arr: Array<number> = [1, 2, 3, 4, 6, 9]
const arr1: Array<string> = ['1', '你好']
const arr2: Array<boolean> = [true, false, true]
const arr3: Array<any> = [{ name: '张三' }, 3, 'hello']

与 interface(接口)定义对象数组

interface Student {
  name:string
  age: number
}

const students: Student[] = [
  { name: '张萨满', age: 111 },
  { name: '张萨满', age: 10 }
]
// 等于
const student: Array<Student> = [
  { name: '张萨满', age: 111 },
  { name: '张萨满', age: 10 }
]

二维数组 或 多维数组

  • 当多层的时候, 就使用下面哪种套娃的方式一层一层向下套
const arr: number[][] = [
  [1, 2],
  [3, 5, 6],
]
// 等于
const arr: Array<Array<number>> = [
  [1, 2],
  [3, 5, 6],
]

混合类型数组 (使用 any 或 使用 元组)

  • 使用 any
const arr: any[] = [{ name: '1111' }, 1, '3', true]
  • 使用元组
const arr: [object, number, string, boolean] = [{ name: '1111' }, 1, '3', true]

函数剩余参数的定义

function show(...arg: string[]): void {
  console.log(arg)

  const a: IArguments = arguments // 对arguments类型的定义
  console.log(a)
}

show('1', '2')

元组类型 (它是数组类型声明的一种方式)

  • 定义一个数组内每一项的类型
  • 数组不能被修改 (数组都是通用的, 用 readonly 修饰符)
  • 可以定义一项是否可以要
// 定义每一项
// 这个数组在初始化时,不能被添加第三项, 但是任然可以用push 添加
const arr: [string, number] = ['122', 45]
arr.push(33)  // 当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型

// 可以用readonly, 使数组无法修改 (只能初始化赋值)
const _arr: readonly [string, number] = ['222', 88]

// 可以用变量声明数组
const array: [x: number, y: string] = [12122, '2222']

// type 与 元组之间的用处
type a = typeof array['length']
const num: a = 2

type b = typeof arr[0]
const num1: b = '111'

type c = typeof _arr[1]
const num2: c =  3333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值