用接口来表示对象,现在我们来说说数组的 5 种表示方法
1.数组 + [ ]
// 1, 类型加括号表示
const arrNum: number[] = [1, 2, 3, 4]
const arr: [number, string, number] = [1, '2', 3]
console.log(arrNum) // [1,2,3,4]
console.log(arr) // [[1, '2', 3]]
arrNum.push('5') // 报错 : 类型“string”的参数不能赋给类型“number”的参数
注意: 如果你想push 一个 非数字就会报错。
2.泛型表示
// 2.泛型表示
const arrNum1: Array<number> = [5, 6, 7, 8, 9]
console.log(arrNum1) // [5, 6, 7, 8, 9]
这边等我看到泛型,在细品。
3.接口表示
// 3.接口表示
// 定义接口
interface arrNumFace {
[index: number]: number
}
const arrNum2: arrNumFace = [10, 11, 12, 13, 14]
console.log(arrNum2) // [10, 11, 12, 13, 14]
是不是感觉和接口的 任意属性差不多 , 这个就表示 用 序号为key 的就是数组。
4.类数组 (例如 aguments)
// 4.类数组表示(内部已经规定好了)
// 定义函数 , 返回传参 arguments
// 报错写法
function arrNum3() {
let argu: number[] = arguments // 报错 : 类型“IArguments”缺少类型“number[]”的以下属性: pop, push, concat, join 及其他 15 项。
return argu
}
// 正确写法
// 定义接口的形式
interface argum {
[index: number]: number
length: number
callee: Function
}
function arrNum4() {
let argum1: argum = arguments
return argum1
}
事实上常用的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等
5.any 类型表示数组
// 利用any来表示数组的类型
const arrNum5: any[] = [1, '2', {}, [1, 2, 3, 4], () => {}]
果然爽啊! , 还有很多点要做项目才知道啊!!!