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 数组类型(五)的更多相关文章

  1. TypeScript入门三:TypeScript函数类型

    TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明Ty ...

  2. Typescript - 变量类型

    原文:TypeScript基本知识点整理 一.number let num1 : number = 20; let num2 : number = 175.5; let a1 : number = I ...

  3. JavaScript高级程序设计(十):数组类型

    先导: 访问对象属性使用的都是点表示法.另外,我们还可以使用方括号表示法来访问对象的属性.在使用方括号的时候,应该将要访问的属性以字符串的形式放到方括号中.这两种方法没有什么区别.但是方括号的优点是可 ...

  4. TypeScript 之类型判断

    在使用 Angular 做项目的时候,对 TypeScript 的类型判断不太熟练,为了方便查找,特意对 TypeScript 的类型判断做了简单梳理.文章只是 TS 官网的内容摘要,没有高深的知识, ...

  5. Javascript数组系列五之增删改和强大的 splice()

    今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我 ...

  6. TypeScript基础类型,类实例和函数类型声明

    TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明. 一.基础类型 TS的基础类型有 Boolea ...

  7. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. js -【 数组】判断一个变量是数组类型的几种方法

    怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...

  9. 使用Typescript重构axios(五)——实现基础功能:处理请求的header

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  10. TypeScript的类型

    ⒈TypeScript的类型 JavaScript语言的数据类型包括以下7种: 1.boolean(布尔),true || false 2.null,表明null值得特殊关键字,JavaScript是 ...

随机推荐

  1. Windows 查看当前登录用户名

    使用 PowerShell 输入 whoami,PowerShell 将以 hostname\username 的方式输出主机名和用户名: $ whoami hostname\username 使用 ...

  2. uni-app 小程序 前置摄像头

    在小程序拍照的话,uni.chooseImage()可以直接调取摄像头拍照,而如果要调用前置摄像头,这个api就没有提供了. 在查找官方文档发现,可以通过camera有提供这么一个组件,页面内嵌的区域 ...

  3. Redis实战9-全局唯一ID

    发布优惠券的时候,每个店铺都可以发布优惠券,当用户抢购的时候,优惠券表中的id如果使用数据库的自增长ID会存在以下问题: 1:id的规律太明显,容易被刷 2:当数据量很大的时候,会受到单表数据的限制 ...

  4. python requests 报错 Caused by ProxyError ('Unable to connect to proxy', OSError('Tunnel connection failed: 403 Tunnel or SSL Forbidden'))

    背景:访问https接口,使用http代理 版本:requests: 2.31.0 从报错可以看出,是proxy相关的报错 调整代码,设定不使用代理,将http与https对应的proxy值置空即可( ...

  5. 将.gradle下的 带hash名称文件夹中的依赖 转换为 .m2上的依赖

    背景:  android studio 在无法下载依赖的情况下 , 仅 使用 mavenLocal() 本地 .gradle 下有对应依赖 , .m2下没有 故将.gradle下的 带hash名称文件 ...

  6. CSS – 实战 Spacing & Layout

    前言 这篇想整理一下在网页开发中, Spacing (间距) 和 Layout 排版是如果被处理的. Spacing 介绍 东西密密麻麻会给人一种很恐怖的感觉. 只要加上一点空间 (间距), 整体感觉 ...

  7. grid网格布局

    https://ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html Grid 布局只对项目生效 划分网格的线,称为"网格线" ...

  8. Spring —— 核心概念

    IoC (Inversion of Control) 控制反转 使用对象时,由主动new产生对象转换为由外部提供对象,对象的创建控制权由程序转移至外部,这种思想成为控制反转 Spring技术对IoC思 ...

  9. 某游戏厂商 hdfs 迁移 distcp failing write attempt Tried pipline recovery 5 times without success 问题排查

    报错截图: 从报错信息看是 distcp 起的map 任务在写 hdfs 的 pipline 失败了,并且重试了5次没有成功,所以这个 task 直接抛出错误失败被 kill 了. 先说解决办法: 清 ...

  10. 报名开启|和你约定在 "Google 应用出海指南针"

    Google 谷歌发布的<2021 移动应用全球化指南>报告中提到,在移动互联网高度渗透的当下,全球用户迸发出来的广泛需求为中国新生代创业者带来了巨大的历史机遇.过去十年,依托于技术和人才 ...