typescript学习笔记--函数(2)
发布时间:2020-12-15 00:41:22 所属栏目:C语言 来源:网络整理
导读:table class="javascript" tr class="li1" td class="ln"pre class="de1"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
<table class="javascript"> |
<tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
addx y
? ? x y
?
let myAdd x y x y
?
在JavaScript里,函数可以使用函数体外部的变量。 当函数这么做时,我们说它‘捕获’了这些变量。
至于为什么可以这样做以及其中的利弊超出了本文的范围,但是深刻理解这个机制对学习JavaScript和TypeScript会很有帮助。
?
let z
?
addToZx y
? ? x y z
?
二、函数类型
? ? ? ? 1.为上面那个函数定义类型:
? ?
? ? ? ? addx number y number number
? ? ? ? ? ? ? ? ? ? ? ? ? x y
? ? ? ?
?
? ? ? ? let myAdd x number y number number xy
?
? ? ? ? 我们可以给每个参数添加类型之后再为函数本身添加【返回值类型】。 TypeScript能够根据返回语句自动推断出返回值类型,因此我们通常省略它。
? ? ? ? 2.书写完整函数类型
? ?
? ? ? ? let myAdd baseValuenumber incrementnumber number
? ? x number y number number x y
?
? ? ? ? 函数类型包含两部分:参数类型和返回值类型。
? ? ? ? ? ? ? ? 我们以参数列表的形式写出参数类型,为每个参数指定一个名字和类型。
? ? ? ? ? ? ? ? 只要参数类型是匹配的,那么就认为它是有效的函数类型,而不在乎参数名是否正确。
? ? ? ? ? ? ? ? 第二部分是返回值类型。 对于返回值,我们在函数和返回值类型之前使用符号,使之清晰明了。
? ? ? ? ? ? ? ? 返回值类型是函数类型的必要部分,如果函数没有返回任何值,你也必须指定返回值类型为而不能留空。
? ? ? ? 3.推断类型
? ? ? ? 尝试这个例子的时候,你会发现如果你在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型:
? ?
? ? ? ?
? ? ? ? let myAdd x number y number number x y
?
? ? ? ?
? ? ? ? let myAdd baseValuenumber incrementnumber number
? ? ? ? ? ? ? ? ?x y x y
?
三、剩余参数
必要参数,默认参数和可选参数有个共同点:它们表示某一个参数。 有时,你想同时操作多个参数,或者你并不知道会有多少参数传递进来。
在JavaScript里,你可以使用arguments来访问所有传入的参数。
在TypeScript里,你可以把所有参数收集到一个变量里:
?
buildNamefirstName string ... string
? firstName restOfName.
?
let employeeName buildName
?
剩余参数会被当做个数不限的可选参数。 可以一个都没有,同样也可以有任意个。
编译器创建参数数组,名字是你在省略号(...)后面给定的名字,你可以在函数体内使用这个数组。
?
四、Lambda表达式和使用
我们把函数表达式变为使用lambda表达式( )。 这样就会在函数创建的时候就指定了‘’值,而不是在函数调用的时候。
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!