三(四)ts非基础类型(数组)
2023-12-15 17:36:39
数组作为我们最常用的数据结构之一,在ts里面存在众多定义方法。
普通声明
//声明一个空数组且不能改变
let arr:[] = []
// arr.push(1)
// 声明一个已知元素类型的数组(普通法)
let arr1:number[] = []
arr1.push(1)
//arr1.push('1') 报错
// 声明一个已知元素类型的数组(泛型法)
let arr2: Array<number> = []
arr2.push(1)
//arr1.push('1') 报错
// 声明一个对象数组(允许所有对象)
let arr3: object[] = []
arr3.push({name: 'fufu'})
arr3.push(new Date())
// arr3.push(1) 报错
// 声明一个具体属性的对象数组
let arr4: {name: string}[] = []
arr4.push({name: 'fufu'})
// arr4.push({age: 'fufu'}) 报错
元组声明
有时候我们需要在数组里存放不同类型的元素,如果我们知道一个数组的所有属性类型与数组长度,通常使用将数组定义为元组
let arr5:[string, number]
arr5 = ['1', 1]
// arr5 = ['1', 1, 2] 报错
// arr5 = [1, 2]报错
arr.push(1) //成功
注意虽然元组在定义的时候就已经确定了长度,但是使用push等方法还是可以添加元素。
接口声明
interface Arr {
0: string,
1: number
}
let arr6: Arr = ['1', 1]
// arr6.push(1) 报错
通过接口定义的类型类似与元组,但是不允许进行push等任何改变数组长度的操作。
我们往往通过接口可以实现一些复杂数组类型的定义
定义一个任意长度和具体属性对象数组
interface ObjArr {
[index: number]: {
name: string,
age: number
}
}
let arr7:ObjArr = [{name: 'fufu', age: 20}, {name: 'dandan', age: 20}]
定义一个任意长度和任意属性的对象数组
interface ObjArr2 {
[index: number]: {
[propName: string]: any
}
}
let arr8:ObjArr2 = [{name: 'fufu'}, {name: 'dandan', age: 20}]
文章来源:https://blog.csdn.net/qq_44473483/article/details/134943545
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!