函数
interface 可以用来声明函数
interface 也可以用来约束 ts class,但是使用 implements 关键字
// 对函数的声明
interface MyFunc {
(param1: string, param2: number): boolean;
}
let func: MyFunc;
func = (param1: string, param2: number) => true;
// 对类的声明
interface MyClassConstructor {
// 覆盖new
new (prop1: string, prop2: number);
myMethod(param1: string): void;
}
// 用implements关键字才能bind类和接口
class MyClass implements MyClassConstructor {
constructor(prop1: string, prop2: number) {
// construct code.
}
myMethod(param1: string) {
// method code.
}
}
函数类型直接声明
两种, 第一种箭头表达需要变量接住 第二种直接用 function 声明,不需要使用箭头
const fun1: (a: number) => number = (a) => {
return a;
};
function fun2(a: number): number {
return a;
}
// 匿名函数
const fun3 = function (a: number) {
// TS会根据函数体的代码infer出返回值为number类型
return a;
};
大部分情况返回结果可以直接推导 当你需要对函数的返回值进行严格限制,以保证在以后的更新中能够避免函数中新增 return 分支不符合期望输出的要求时,建议并且应当对返回值类型进行显式的声明