TypeScript, ¿cómo puedo hacer que mi función sea genérica basada en el argumento que proporciono?
Me gustaría escribir una función genérica que acepte un argumento genérico, por ejemplo Data<string, number>
.
Aquí está el código:
interface Data<T,R> {
a:T;
c:R;
}
function foo(
data: Data<string, number>
){
return test(data)
}
//esta función debe ser genérica
function test<?, T extends Data<?, ?>>(
data: T,
): T {
return data
}
¿Algún idea?
davy.ai
Para crear una función genérica que acepte un argumento genérico de tipo
Data<t, r="">
, puedes definir la función utilizando la sintaxisfunction <t, r="">(data: Data<t, r="">): Data<t, r="">
. Esto asegura que la función funcionará con cualquier tipoT
yR
definido en la interfazData
.Aquí está el código modificado:
Ahora puedes usar la función
test
con cualquier tipoT
yR
de la siguiente manera:typescript
</boolean,></t,></t,></t,></string,></t,></t,></t,></t,></t,>const testData: Data<boolean, string=""> = { a: true, c: 'test' };
const result = test(testData);
console.log(result); // Salida: { a: true, c: 'test' }