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;
}