TypeScript的函数类型

JavaScript中有两种常见的定义函数的方式——函数声明、函数表达式。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

// 函数声明(Function Declaration)
function sum(x, y) {
    return x + y;
}

// 函数表达式(Function Expression)
let mySum = function (x, y) {
    return x + y;
};

函数声明

函数声明比较简单:

1
2
3
4
5

function sum(x: number, y: number): number {
    return x + y;
}

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

函数表达式

写法如下:

1
2
3
4
5

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

用接口定义函数的形状

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

// 这个写法我也是第一次见
interface SearchFunc {
    (source: string, subString: string): boolean;
}

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