本周接着学习typeScript,上一次学习到接口,接口一般首字母大写。
数组
数组的表示方法:
1.「类型 + 方括号」表示法
类型+[];
以上例子中,类型是number,这就限制了数组的每一项必须是number类型,并且,使用方法操作数组时的参数也只能是number类型,否则报错。
如果想定义一个字符串数组,那么就应该是这样
2.数组泛型表示(Array Generic):
数组泛型+尖括号+<类型>
3.接口表示类数组
4.any表示数组
any定义数组元素可以是任意类型
函数的类型
在js中常见的定义函数的方式有函数声明和函数表达式.
Ts中:函数声明:
在《typeScript入门》一书中,有这样一句话:
在TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。
这句话对应的函数表达式就是这样的:
我们还也可以使用接口来定义函数的形状,
函数定义中也使用?定义可选参数,需要注意的是,可选参数必须在必需参数之后。
参数默认值:
可以给参数设置默认值,当作可选参数看待,一旦设置,就不再受限于可选参数在必需参数之后了。
类型断言:
类型断言就是告诉浏览器,某个变量是什么类型,主要有两种表示方法。
写法一:
<类型>值
写法二:
值 as 类型
泛型(Generics):
上边数组用到了泛型表示,那么泛型是个什么东西呢?
解释:typeScript中文文档中这样介绍:
也就是说为了代码的可复用?
泛型是一种创建可复用代码组件的工具。这种组件不只能被一种类型使用,而是能被多种类型复用。
嗯……,这个泛型好像跟前面的any很像哎?莫方,他们肯定有区别,不然搞两个东西干嘛。
往下看,泛型如何使用?
在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
演示一下就是这样:
这个例子中,函数名后加了一个T,表示输入任意类型,输入value:T和输出Array<T>,都是同一类型,这就实现了一个返回一个定长的默认值数组的函数。我们在调用这个函数的时候可以赋值任何类型。
我们在使用泛型的时候,可以一次性定义多个类型参数(多个不同类型的参数)。
上面的例子传入两个不同类型的参数(元组),函数返回元组的元素。
元组:
上边提到元组,元组又是什么,看上去就是数组啊?
介绍:数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。
例子:
嗯?这不就是any表示的数组吗?
看看区别在哪里?
any数组:
元组: