在TypeScript,interface可以用来定义函数的结构。
基本语法
interface InterfaceName {
(param1: parameterType1,param2:parameterType2... ): returnType;
}
示例
interface Formatter{
(input: string): string;
}
Formatter定义了一个string类型的参数input,返回值为string类型。
使用
let upperCaseFormatter: Formatter = function(input: string): string {
return input.toUpperCase();
}
let lowerCaseFormatter: Formatter = function(input: string): string {
return input.toLowerCase();
}
因为Formatter已经定义了函数的结构,所以可以忽略参数的类型以及返回值的类型,参数名也可以和接口定义的不同。
let upperCaseFormatter: Formatter = function(i){
return i.toUpperCase();
}
let lowerCaseFormatter: Formatter = function(i){
return i.toLowerCase();
}
应用场景: 回调函数
在JavaScript里常常用到回调函数,我们可以使用TypeScript的函数接口来增强回调函数的类型检查。
interface Callback {
(name: string): void;
}
function myfunc(name:string, callback: Callback) {
callback(name);
}