TS学习随笔(四)->数组的类型
少侠们,今天我们继续来搞一搞TS
今天我们要来看一看TS中数组的定义是个什么鬼样子
数组的类型:
在 TypeScript 中,数组类型有多种定义方式,比较灵活。下面我们来看看有哪些定义方法
「类型 + 方括号」表示法:
最简单的方法是使用「类型 + 方括号」来表示数组:
let tsArray: number[] = [,,,,]
数组中的项中不允许出现其他类型
let fibonacci: number[] = [, '', , , ]; // index.ts(1,5): error TS2322: Type '(number | string)[]' is not assignable to type 'number[]'.
// Type 'number | string' is not assignable to type 'number'.
// Type 'string' is not assignable to type 'number'.
上例中,[1, '1', 2, 3, 5]
的类型被推断为 (number | string)[]
,这是联合类型和数组的结合。
数组的一些方法的参数也会根据数组在定义时约定的类型进行限制:
let fibonacci: number[] = [, , , , ];
fibonacci.push(''); // index.ts(2,16): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
上例中,push
方法只允许传入 number
类型的参数,但是却传了一个 string
类型的参数,所以报错了。
数组泛型:
也可以使用数组泛型(Array Generic) Array<elemType>
来表示数组:
let fibonacci: Array<number> = [, , , , ];
关于泛型,大家可以先仔细学习一下,后面我们也会学到
用接口表示数组:
interface NumberArray {
[index:number]: number;
}
let fibonacci: NumberArray = [,,,,]
NumberArray
表示:只要 index
的类型是 number
,那么值的类型必须是 number
。
any 在数组中的应用
一个比较常见的做法是,用 any
表示数组中允许出现任意类型:
let list: any[] = ['Xcat Liu', , { website: 'http://xcatliu.com' }];
类数组(特别注意)
类数组(Array-like Object)不是数组类型,比如 arguments
:
function sum() {
let args: number[] = arguments;
} // index.ts(2,7): error TS2322: Type 'IArguments' is not assignable to type 'number[]'.
// Property 'push' is missing in type 'IArguments'.
事实上常见的类数组都有自己的接口定义,如 IArguments
, NodeList
, HTMLCollection
等:
function sum() {
let args: IArguments = arguments;
}
好了,以上就是TS里面的数组类型
参考文章:https://github.com/xcatliu/typescript-tutorial/blob/master/basics/type-of-array.md
最新文章
- 软件工程(FZU2015)赛季得分榜,第11回合(beta冲刺+SE总结)
- cookie的session_id解释
- Oracle基础笔记
- Linux基本权限学习
- Orchard源码分析(6):Shell相关
- jQery无缝滚动效果
- (转)关于CoreData的一个工具Mogenerator的使用
- ubuntu12.04已安装SQLite3 而简单易用
- surfaceView和Camera配合进行摄像头的预览
- mavean的依赖传递和排除依赖
- 数组中的第K个最大元素leetcode(Top K的问题)
- 关于 Senparc.Weixin.Cache.Redis 引用的 StackExchange.Redis 版本不匹配的反馈测试
- 【Java】JDK/JVM相关工具
- Nginx安装echo模块
- poj 3304
- BesLyric 全新版本下载 ( windows \ mac \ linux )
- [phomeflashpic]怎样调用帝国CMS图片幻灯效果
- AdaBoost Classifier和Regressor
- Jmeter自动化测试 数据驱动测试,将数据存入csv文件中来调用,或将数据存在DB中进行调用
- iOS UI-UIScrollView控件实现图片缩放功能
热门文章
- HTML标题 段落 样式
- [编译] 4、在Linux下搭建nRF51822的开发烧写环境(makefile版)
- 大数据与云计算的关系是什么,Hadoop又如何参与其中?Nosql在什么位置,与BI又有什么关系?
- [Swift]LeetCode826. 安排工作以达到最大收益 | Most Profit Assigning Work
- Metrics.NET step by step
- 14.Git分支-rebase有趣的例子、变基带来的问题及解决方案
- 9.Flask Cookie和Session
- 采坑:python base64
- C#版 - 226. Invert Binary Tree(剑指offer 面试题19) - 题解
- 深入浅出ASP.NET Core系列(入门篇)