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. 【GitHub】上传代码通用操作等(附下载单个文件夹或文件)

    一.创建GitHub账号以及配置 参考我的另一篇文章:<[Mac系统 + Git]之上传项目代码到github上以及删除某个文件夹> 二.创建新的个人知识库 前面配置完之后,下面讲的再新建 ...

  2. 【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问

    问题描述 对Azure上的虚拟机资源,需要进行安全管理.只有指定的IP地址才能够通过RDP/SSH远程到虚拟机上, 有如下几点考虑: 1) 使用Azure Policy服务,扫描订阅中全部的网络安全组 ...

  3. python 读取mysqlDB中指定的表名的DDL语句

    注意: 1. 此python文件不要起名为mysql,会跟import的包名重复,python mysql.py运行报错 2.如果需要带端口号,请加database后加上, port="33 ...

  4. 005.MinIO-DirectPV分布式多租户存储部署

    MinIO部署准备 部署概述 本实验结合Kubernetes进行MinIO部署,实现MinIO于Kubernetes的融合. minio官方支持通过简单的快速部署,以便于进行基础测试: curl ht ...

  5. SimMTM: 用于掩码时间序列建模的简单预训练框架《SimMTM: A Simple Pre-Training Framework for Masked Time-Series Modeling》(预训练模型、时序表征学习、掩码建模、流行学习、近邻聚合、低级表示学习(掩码)、高级表示学习(对比)、segment-wise 和point- wise)

    今天是2024年7月3日10:15,写一篇1月7日就看过的论文,哈哈哈哈哈哈哈哈哈,突然想到这篇论文了. 论文:SimMTM: A Simple Pre-Training Framework for ...

  6. PYRAFORMER: 用于长时间序列建模和预测的低复杂度金字塔注意力《PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTENTION FOR LONG-RANGE TIME SERIES MODELING AND FORECASTING》(金字塔注意力模块机制、PAM、CSCM、多尺度)

    今天是2022年10月1日,今天重读一遍这篇论文. 10月1日16:48,上次读是4月20日,时间过得好快. 论文:PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTEN ...

  7. Figma 学习笔记 – Layout Grid

    前言 我原本以为, 在 Figma 只要用 Auto Layout 就可以打天下. 真的是 too young too simple. 要做一个简单的 7:3 比例, 用 Auto Layout 是做 ...

  8. Servlet——Tomcat8以前解决中文乱码问题

    Request 请求参数中文乱码问题         // 1.解决乱码问题:POST,getReader() request.setCharacterEncoding("UTF-8&quo ...

  9. MyBatis动态增改,多字段模糊查询

    示例: insert insert into bargain_products <trim prefix="(" suffix=")" suffixOve ...

  10. 【赵渝强老师】MongoDB插入文档

    MongoDB是非关系型数据库NoSQL的代表,作为一款可分布式存储的数据库,对文档的操作是MongoDB的重中之重.在本文中,我们将着重为大家介绍如何在MongoDB中插入文档. MongoDB一共 ...