学习TypeScript数组类型(四)
数组的类型
使用类型 + []
表示
1 | // 类型加[] |
数组的泛型
使用 Array<类型>
表示,等价与 类型[]
,在场景不确定数据具体类型时只能使用泛型定义数组的类型,使用 Array<T>
而不能使用 T:[]
1 | let arr: Array<number> = [1, 2, 3, 4, 5] |
接口表示数组类型
一般用来描述类数组
1 | // 表示索引的类型是数字时,那么值的类型必须是数字, |
多维数组
1 | let data: number[][] = [[1, 2], [3, 4]] |
arguments类数组
1 | function add(...args: any): void { |
...args
剩余参数和 arguments
对象的区别
...args
剩余参数(展开运算符)
如果函数的最后一个命名参数用...
为前缀,它会将后面所有剩余的实参个数包裹成一个数组1
2
3
4
5function add(age: number, sex: string, ...args: any): void {
// 结果为(18, '男',['antVae', '喜欢爬山'])
console.log(age, sex, args)
}
add(18, '男', 'antVae', '喜欢爬山')arguments
对象
在函数中,使用特殊对象arguments
,开发者无需指定明确的参数名,就能访问它们。arguments
对象并不是一个数组,而是一个类数组对象arguments
中包含了函数传递的参数,length和callee属性length
属性表示的是实参的长度,即调用函数的时候传入的参数个数callee
属性则只想的函数自身,我们可以通过它来调用自身函数arguments
是一个经典的类数组对象,我们可以通过Function.call
或者Function.apply
方法来间接调用数组的方法, 也可以通过Array.prototype.slice
或Array.prototype.splice
等方法把类数组对象转换成真正的数组1
2
3
4
5
6
7function add(name: string, ...args: any): string {
// 结果为(['喜欢爬山'], [Arguments] { '0': 'antVae', '1': '喜欢爬山' })
console.log(args, arguments)
return Array.prototype.slice.call(arguments).join('')
}
// 结果为 antVae喜欢爬山
console.log(add('antVae', '喜欢爬山'))
any在数组中的应用
一个常见的例子就是数组中可以存在任意类型
1 | let arr: any[] = [1, 'antVae', false, {sex: '男'}, []] |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 antVae!