函数声明 和 函数表达式

  1. // 函数声明
  2. function sum(x, y) {
  3. return x + y;
  4. }
  5. // 函数表达式
  6. let mySum = function (x, y) {
  7. return x + y;
  8. };

一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到,其中函数声明的类型定义较简单。

  1. function sum(x: number, y: number): number {
  2. return x + y;
  3. }

输入多余的(或者少于要求的)参数,是不被允许的

  1. function sum(x: number, y: number): number {
  2. return x + y;
  3. }
  4. sum(1, 2, 3);
  5. // 编译报错:多了1个参数

可选参数

输入多余的(或者少于要求的)参数,是不允许的,与接口中的可选属性类似,我们用 ? 表示可选的参数
可选参数必须接在必需参数后面,可选参数后面不允许再出现必需参数了

  1. function add(x: number, y: number, z?: number): number {
  2. if (typeof z === "number") {
  3. return x + y + z;
  4. } else {
  5. return x + y;
  6. }
  7. }

用接口定义函数的形状

  1. const add = (x: number, y: number, z?: number): number => {
  2. if (typeof z === "number") {
  3. return x + y + z;
  4. } else {
  5. return x + y;
  6. }
  7. };
  8. interface ISum {
  9. (x: number, y: number, z?: number): number;
  10. }
  11. let add2: ISum = add;

在 TypeScript 的类型定义中,=>用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型