Interfaz de función en TypeScript
Presentaremos una interfaz de función en TypeScript con ejemplos.
Interfaz como tipo de función en TypeScript
La interfaz nos permite crear una estructura principal utilizada en toda la aplicación para ciertas clases o funciones. Cualquier cambio en la estructura en cualquier etapa de la aplicación dará un error.
La interfaz puede validar la estructura específica de propiedades, objetos devueltos por funciones u objetos pasados como parámetros. Podemos definir fácilmente una interfaz usando la palabra clave interfaz
e incluir las propiedades y el método.
Podemos declarar métodos usando la función o una función de flecha. Como se muestra a continuación, veamos un ejemplo y creemos una interfaz para cursos.
Código:
# typescript
interface CsCourse {
subCode: number;
subName: string;
instructor(id): string;
getCgpa: (number) => number;
}
Usemos esta interfaz para nuestras funciones.
Código:
# typescript
interface Course
{
(subCode: number, subName: string): void;
};
function addSub(subCode:number, subName:string):void {
console.log('Adding Subject: Subject Code = ' + subCode + ', Subject Name = ' + subName)
}
function updateSub(subCode:number, subName:string):void {
console.log('Updating Subject: Subject Code = ' + subCode + ', Subject Name = ' + subName)
}
let sub: Course = addSub;
sub(301, 'Compiler Construction');
sub = updateSub;
sub(101, 'Introduction to Programming');
Producción:
Al crear una interfaz, podemos seguir la estructura de las propiedades o funciones y asegurarnos de que se siga la misma estructura en toda la aplicación. El uso de interfaces para estas propiedades hace que nuestra aplicación sea segura y podemos garantizar que se envíen los datos correctos a las funciones.
Ahora, intentemos asignar una nueva función con una firma diferente a la firma que definimos en el curso de interfaz.
Código:
# typescript
function delSub(subCode:number):void {
console.log('Subject deleted.')
}
let sub: Course = delSub;
El código anterior dará el error del compilador.
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn