En ocasiones requerimos escribir funciones que puedan trabajar con una serie de tipos, en los cuales tenemos conocimiento de ciertas caracter铆sticas acerca su composici贸n.
Supongamos que requerimos crear una funci贸n que reciba un valor que tenga disponible la propiedad .length
, como ya vimos podr铆amos escribirlo as铆.
function imprimirLongitud(arg: { length: number }): { length: number } {
console.log(arg.length);
return arg;
}
En lugar de esto podemos tambi茅n utilizar una funci贸n gen茅rica que permita recibir cualquier valor que extienda una interfaz con la propiedad .length
.
interface ValorConLength {
length: number;
}
function obtenerLongitud<T extends ValorConLength>(arg: T): T {
console.log(arg.length);
return arg;
}
Ahora que ahora nuestra funci贸n gen茅rica esta restringida a un
T
que extiendaValorConLength
, tambi茅n asume como restricci贸n queT
tenga una propiedadlength
.