Functions
在 JavaScript 中有很多方式可以声明函数。让我们看一个将两个
数字相加的函数:
创建一个叫做 addOldSchool 的全局函数。
// TypeScript 提供了函数定义和标记函数预期类型的额外语法。
接下来是 add 函数的最开放的版本,它代表 add 接受任意类型的两个
输入:它可以是您输入的字符串,数字或对象。
function addOldSchool(x, y) {
return x + y;
}
// 您也可以将函数的名称移动到一个变量名中。
const anonymousOldSchoolFunction = function (x, y) {
return x + y;
};
// 您也可以使用箭头函数作为函数的快捷方式。
const addFunction = (x, y) => {
return x + y;
};
// 我们将着重介绍最后一种方式,但是所有内容都适用于全部三种方式。
// 这是合法的 JavaScript(例如可以这样连接字符串),但是对于我们
已知的适用于数字的函数并不是最佳选择。因此我们将 x 和 y 转换为
仅接受数字。
const add1 = (x: any, y: any) => {
return x + y;
};
add1("Hello", 23);
// 很好,如果我们传入任何其他非数字的东西可以得到一个错误。如果
您将鼠标悬停在上面的 add2 上,您将会看到 TypeScript 将其描述为:
const add2: (x: number, y: number) => number
推断出两个输入都是数字时,数字也是唯一可能的返回值类型。很好,您不
需要编写额外的语法。让我们看看这样做的必要条件:
const add2 = (x: number, y: number) => {
return x + y;
};
add2(16, 23);
add2("Hello", 23);
// 这个函数将会报错,因为我们告诉 TypeScript 应该返回一个字符串,
但是函数没有实现其承诺。
const add3 = (x: number, y: number): string => {
return x + y;
};
// 这是非常明确的 add2 的版本——在某些情况下,您希望使用显式的返回类型
语法给自己在开始前留下一些工作空间。和测试驱动开发建议从失败的测试开始
类似。但是在这种情况下,它的函数是不正确的。
此示例仅是入门知识,您可以在手册以及 JavaScript 函数式编程的示例中
了解更多关于 TypeScript 函数的工作原理:
https://www.typescriptlang.org/docs/handbook/functions.html
example:function-chaining
为了继续学习 JavaScript 精粹,我们将了解代码流如何影响 TypeScript 的类型:
example:code-flow
const add4 = (x: number, y: number): number => {
return x + y;
};