# 函数
# 函数表达式
如果要我们现在写一个对函数表达式(Function Expression)的定义,可能会写成这样:
let mySum = function (x: number, y: number): number {
return x + y;
};
1
2
3
2
3
这是可以通过编译的,不过事实上,上面的代码只对等号右侧的匿名函数进行了类型定义,而等号左边的 mySum
,是通过赋值操作进行类型推论而推断出来的。如果需要我们手动给 mySum
添加类型,则应该是这样:
let mySum: (x: number, y: number) => number = function (
x: number,
y: number
): number {
return x + y;
};
1
2
3
4
5
6
2
3
4
5
6
注意不要混淆了 TypeScript 中的 =>
和 ES6 中的 =>
。
在 TypeScript 的类型定义中,=>
用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。
在 ES6 中,=>
叫做箭头函数,应用十分广泛,可以参考 ES6 中的箭头函数 (opens new window)。
# 重载
function reverse(params: string): string;
function reverse(params: number): number;
function reverse(params: string | number): string | number | void {
if (typeof params === "string") {
return params.split("").reverse().join("");
} else if (typeof params === "number") {
return Number(params.toString().split("").reverse().join(""));
}
}
console.log(reverse(123));
console.log(reverse("123"));
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确的定义写在前面。