Los ejemplos que hemos visto de interfaces en TypeScript hasta el momento han sido ejemplos de interfaces para objetos, si bien también podemos definir un interface de una función en TypeScript.
La idea es la misma, lo que buscamos a la hora de definir el interface de una función en TypeScript es que si definimos una función, tanto los parámetros que se le pasan, como el valor que retorna esté claramente definido, independientemente de las veces que definamos funciones de ese tipo.
La estructura para poder definir el interface de una función en TypeScript es la siguiente:
interface NombreInterface {
(propiedad1:tipo, propiedad2:tipo,...,propieddN:tipo):tipo-retorno;
}
Así, por ejemplo, podemos definir un interface que defina lo que sería la función del cálculo del área de un triángulo. La cual quedaría de la siguiente manera:
interface CalculoAreaTriangulo {
(base:number, altura:number):number;
}
Vemos que hemos definido que las funciones que tipo CalculoAreaTriangulo deben de tener dos propiedades numéricas y devolver un número.
Así definiremos una variable que vaya a tener una función de este tipo:
let miCalculo: CalculoAreaTriangulo;
Cuando vayamos a definir la función, esta deberá de cumplir con el interface. Por ejemplo, esta función si que lo cumpliría:
miCalculo = function(b:number,a:number) {
return (b*a)/2;
}
Mientras que esta otra no:
miCalculo = function(b:number,a:number) {
return "Tu area es de *" + (b*a)/2;
}
Ya que el valor que se está devolviendo es de tipo string
en vez de ser un tipo number
.
Con este ejemplo tan sencillo hemos visto como se puede definir un interface de una función en TypeScript.