# 数组的类型

# 类型 + 方括号 表示法

let nums: number[] = [1,2,3]
1
  • 不允许出现其他类型
let nums: number[] = [1, '2', 3] // error
1
  • 数组的一些方法的参数 也会限制
let nums: number[] = [1,2,3]
nums.push('4') // error
1
2

# 数组泛型

let nums: Array<number> = [1,2,3]
1

# 类数组

  • 类数组不是数组类型, arguments 是类数组
// error
function fn() {
  let args: number[] = arguments; 
  // Type 'IArguments' is missing the following properties from type 'number[]': pop, push, concat, join, and 24 more.
}

// correct
function fn() {
  let args: {
    [index: number]: number,
    length: number,
    callee: Function
  } = arguments;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • 常用的类数组有自己的接口定义 IArguments NodeList
function sum() {
  let args: IArguments = arguments;
}

interface IArguments {
  [index: number]: any;
  length: number;
  callee: Function;
}
1
2
3
4
5
6
7
8
9

# any

let list = [
  1,
  'hello',
  { name: 'you' }
]
1
2
3
4
5