函数定义
在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression):
// 函数声明(Function Declaration) function sum(x, y) { return x + y; } // 函数表达式(Function Expression) let mySum = function (x, y) { return x + y; };
函数声明
一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到,其中函数声明的类型定义较简单:
function sum(x: number, y: number): number { return x + y; }
函数表达式
typescript中函数表达式(Function Expression)的完整写法是:
let mySum: (x: number, y: number) => number = function (x: number, y: number): number { return x + y; };
如果你在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型(类型推断):
// mySum has the full function type let mySum = function(x: number, y: number): number { return x + y; }; // The parameters `x` and `y` have the type number let mySum: (baseValue: number, increment: number) => number = function(x, y) { return x + y; };
这叫做“按上下文归类”,是类型推论的一种。 它帮助我们更好地为程序指定类型。
注意不要混淆了 TypeScript 中的 =>
和 ES6 中的 =>
。
在 TypeScript 的类型定义中,=>
用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。
在 ES6 中,=>
叫做箭头函数,应用十分广泛,可以参考 ES6 中的箭头函数。
可选参数及默认参数
// 可选参数 function createUserId(name: string, age?: number, id: number): string { return name + id; } // 默认参数 function createUserId(name: string = 'Semlinker', age?: number, id: number): string { return name + id; }
剩余参数
function push(array, ...items) { items.forEach(function(item) { array.push(item); }); } let a = []; push(a, 1, 2, 3);
参考: