typeScript 数组类型(五)
typeScript 数组类型声明分默认数组类型和数组泛型声明,下面一一介绍
基础数组类型声明
// 声明数组类型 全数字类型
let arr: number[] = [1, 2, 4, 5, 7] // 这么写会报错的 不可以指定字符串类型作为数组的值
let arr1: number[] = [1, 2, 3, 4, '23323'] // 解决上面的类型 可以采用联合类型 let arr2: (number | string)[] = [1, 2, 3, 5, '2222'] // 或者采用any类型制定
let arr3: any[] = [1, 2, 3, 5, '2222']
那么什么数组泛型呢
规则 Array<类型> 类似这种
// 数组泛型的定义方式
let arr4:Array<number> = [1,2,3,4,5,6]
如何数组中包含多种类型可以这么定义
// 如果是多种数据混合的时候
let arr5: Array<number|string> =[1, 2, 3, '4', 5, 6]
那么还有其他方式来定义数组吗?有,那就是用接口来模拟
如下代码
interface numberArr{
[index:number]:number
}
let a:numberArr = [1,2,3,4,5,6,7]
//表示:只要索引的类型是数字时,那么值的类型必须是数字。
那么通过接口模拟数组,如何表示多个多种数据类型呢,我们可以尝试这么做
interface NumberOrStringArr{
[index:number]:number|string
}
let b:NumberOrStringArr = [1, 2, 3, '4', 5, 6]
上述这么写也是可以的
那如何表示多维数组呢
如果是二维数组,我们可以这么表示,前面的两个中括号数量就代表数组的维度
let data:number[][] = [[1,2], [3,4]];
那么一些类数组改如何表示呢,比如arguments这种,下面我来介绍这种数组的表示方式
function fnArr(...args: any): void {
//错误的arguments 是类数组不能这样定义
let arr: number[] = arguments
console.log('arr :>> ',arr);
}
fnArr(111, 222, 333)
比如我们声明上面这个函数,发现会报错,报错如下

意思是类数组并不具备真实数组的方法,那么也就没办使用帧数数组的定义的方式来定义它,我们可以这么改造(使用ts内置对象IArguments 定义)
function fnArr(...args: any): void {
//ts内置对象IArguments 定义
let arr: IArguments = arguments
}
fnArr(111, 222, 333)
实际上ts内置的这个对象实现是这样的
//其中 IArguments 是 TypeScript 中定义好了的类型,它实际上就是:
interface IArguments {
[index: number]: any;
length: number;
callee: Function;
}
通过接口模拟出了arguments的特性
那么如果数组是任务类型的怎么办,就使用any:[] 定义即可
let anyArr:any[] = [1,'222',{a:1}]
下一节我们学习函数扩展
typeScript 数组类型(五)的更多相关文章
- TypeScript入门三:TypeScript函数类型
TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明Ty ...
- Typescript - 变量类型
原文:TypeScript基本知识点整理 一.number let num1 : number = 20; let num2 : number = 175.5; let a1 : number = I ...
- JavaScript高级程序设计(十):数组类型
先导: 访问对象属性使用的都是点表示法.另外,我们还可以使用方括号表示法来访问对象的属性.在使用方括号的时候,应该将要访问的属性以字符串的形式放到方括号中.这两种方法没有什么区别.但是方括号的优点是可 ...
- TypeScript 之类型判断
在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理.文章只是 TS 官网的内容摘要,没有高深的知识, ...
- Javascript数组系列五之增删改和强大的 splice()
今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我 ...
- TypeScript基础类型,类实例和函数类型声明
TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明. 一.基础类型 TS的基础类型有 Boolea ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- js -【 数组】判断一个变量是数组类型的几种方法
怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...
- 使用Typescript重构axios(五)——实现基础功能:处理请求的header
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- TypeScript的类型
⒈TypeScript的类型 JavaScript语言的数据类型包括以下7种: 1.boolean(布尔),true || false 2.null,表明null值得特殊关键字,JavaScript是 ...
随机推荐
- Devexpress GridView 单元格输入检验
实现效果 打开设计器 找到CellValueChanged事件 编写代码 private void gvmain_CellValueChanged(object sender, DevExpress. ...
- 2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量。 按照以下规则进行n次
2024-08-28:用go语言,给定一个从1开始.长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量. 按照以下规则进行n次 ...
- Android Adapter中组件EditText文本变化监听 addTextChangedListener
问题背景:使用适配器显示一个列表,列表中Item中有EditText,滚动时会有EditText组件内容消失 步骤: 1. 在Adapter中,添加interface public interface ...
- 关于.NET在中国为什么工资低的分析
引言 近年来,随着软件开发行业的蓬勃发展,越来越多的编程语言和框架进入了市场,成为了不同类型软件开发项目的首选工具.然而,在中国的开发者社区中,.NET 开发人员的工资水平相比其他技术栈,如 Java ...
- 深度学习/NLP中的Attention注意力机制
首先是整体认知,Attention的位置: 传送门1:Attention 机制 传送门2:Attention用于NLP的一些小结 一句话概括:Attention就是从关注全局到关注重点. 借鉴了人类视 ...
- EF Core – Unit of Work, DbContext, Transaction 概念解释
前言 踩了一个坑, 下面是 2 个 scope 的调用, 第 1 和 3 是一个 Audit log filter action, 第 2 个是 controller. // open tran // ...
- 选择:Qt Creator、Qt Designer、Qt Design Studio,三种开发工具,您选择哪一种?
前言 本文介绍了三种QT开发工具的特点,以及各自的优点和缺点. QT三种工具对比 QT提供的工具 Qt Creator: 扮演的是QT Widgets和QT QML的IDE的角色. 优点: 可以编写C ...
- Redis 内存突增时,如何定量分析其内存使用情况
背景 最近碰到一个 case,一个 Redis 实例的内存突增,used_memory最大时达到了 78.9G,而该实例的maxmemory配置却只有 16G,最终导致实例中的数据被大量驱逐. 以下是 ...
- Vue中防抖和节流 --来自官方文档
Vue 没有内置支持防抖和节流,但可以使用 Lodash 等库来实现. 如果某个组件仅使用一次,可以在 methods 中直接应用防抖: <script src="https://un ...
- 47.vue-router的钩子函数
钩子函数就是路由导航守卫 : 有 7 个守卫,分为 3 类 : 全局守卫:在全部的组件生效: beforeEach 全局前置守卫 afterEach 全局后置守卫 解析守卫 组件守卫:在某个组件生效 ...