函数类型声明

Js中有两种常见的定义函数的方式--函数声明和函数表达式

// 函数声明(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;
}

如果对一个函数表达式进行类型定义,可能会这样写

let mySum = function (x:number, y:number) : number { 
    return x + y; 
}

这样写是没问题的,但实际上,上面的等式只对右侧的匿名函数进行了类型定义,而等号左边的mySum是通过赋值操作进行类型推论而推断出来的。如果手动添加类型,应该是这样的。

let mySum : (x:number, y:number) => number
    = 
    function (x:number, y:number) {
        return x + y;
    }

在typescript中,用=>表示函数的定义,左边是输入类型,右边是返回类型。

我们也可以使用接口的方式定义一个函数需要符合的形状

interface SearchFunc {
    (source: string, subString: string) : boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
    return source.search(subString) !== -1;
}

你可能感兴趣的:(函数类型声明)