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是 ...
随机推荐
- APT 使用
使用 Ubuntu 包搜索器 apt 命令 功能 apt install 安装软件包 apt remove 移除软件包 apt purge 移除软件包及配置文件 apt update 刷新存储库索引 ...
- LaTeX 编译 acmart 文档报错:An attempt to redefine \baselinestretch detected. Please do not do this for ACM submissions!
在编译一篇从 arXiv 下载的文档时遇到如下错误: Class acmart Error: An attempt to redefine \baselinestretch detected. Ple ...
- VS Code 代码片段指南: 从基础到高级技巧
前言 " 系列首发于公众号『非同质前端札记』 ,若不想错过更多精彩内容,请"星标"一下,敬请关注公众号最新消息. 今天咱们来聊聊 VS Code 里的自定义代码片段. 这 ...
- WKCTF RE
WKCTF so_easy 安卓逆向,关键的check逻辑都在native层里面 主要是很多层的异或操作 除了Z3和爆破想不到其他方法了 from z3 import * src = [ 0xAE, ...
- Goby漏洞发布 | 0day NACOS /nacos/v1/cs/ops/data/removal RCE代码执行漏洞【已验证】
漏洞名称:NACOS /nacos/v1/cs/ops/data/removal RCE代码执行漏洞 English Name:NACOS /nacos/v1/cs/ops/data/removal ...
- Magic Quadrant 魔力象限
前言 在做 Web Application Firewall research 的时候看见了一张图. 这格式之前也看见过, 但没怎么上心, 现在才注意到它很好表达了行业或者产品的市场格局. 于是特地 ...
- 均值回归策略在A股ETF市场获利的可能性
如何在股票市场获利 曾经有人告诉我一个在股票市场赚钱的秘诀,只要掌握这个秘诀,赚钱就像捡钱一样容易.他说:这个秘诀其实很简单,就是在股票价格低的时候买入,在价格高的时候卖出. 啧啧,不愧是秘诀,明明是 ...
- 《HelloGitHub》第 102 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- PHP面试,Redis
1. 什么是Redis? Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它可以用作数据库.缓存和消息中间件.它支持多种数据结构,如字符串.哈希.列表.集合 ...
- springboot的启动类必须和controller在同一层级
springboot的启动类必须和controller在同一层级