Sé que probablemente haya una respuesta fácil a esto, pero estoy tratando de crear una función que resuelva/devuelva el valor de una cantidad variable de funciones en una matriz. Sin embargo, parece que a mecanografiado no le gusta esto. ¿Cuál sería la forma apropiada de escribir/arreglar esta función?
const func = (x:número, y:número) => {x,y}
const executeRepetitiveFunction = (num: number, func: () => unknown) => { const returnValues: Array<(unknown)> = [] for (let i = 0; i < num; i++) { returnValues.push(func()) } return returnValues }error
var result = func(); ^ TypeError: func is not a function at executeRepetitiveFunctionSi desea devolver algo de la función que está pasando y almacenarlo en una matriz, simplemente puede llamarlo y declarar func como un tipo de función. Puedes hacer algo como esto:
const executeRepetitiveFunction = (num: number, func: Function) => { const returnValues: Array<(unknown)> = [] for (let i = 0; i < num; i++) { returnValues.push(func()) } return returnValues } const testFunction: Function = (): String => { return 'ok'; } executeRepetitiveFunction(5, testFunction); Esto devolverá ok 5 veces y lo almacenará en una matriz. // Output: ['ok', 'ok', 'ok', 'ok', 'ok']
Como alguien dijo, su código no tiene sentido. El error que está viendo es completamente preciso: no tiene una función definida llamada func . Ha configurado func como el nombre de un parámetro en su declaración de función executeRepetitiveFunction , pero no está disponible fuera del alcance de esa función.
Entonces, ese error es irrelevante para la pregunta que está haciendo, y solo responderé la pregunta que realmente está haciendo.
const executeRepetitiveFunction = (num: number, func: () => unknown) : Promise<Array<any>> => { return new Promise((resolve, reject) => { const returnValues: Array<any> = [] for (let i = 0; i < num; i++) { returnValues.push(func()) } resolve(returnValues); }); } const valuesPromise = executeRepetitiveFunction(5, () => { return "Execution complete" }); Entonces, ¿qué sucede aquí? Primero declaramos nuestra función executeRepetitiveFunction , que toma dos parámetros, un número y una función que devuelve un tipo de datos desconocido. Luego devolvemos una promesa de esta función, que se resuelve una vez que se completa el bucle.
Ejecutamos la función después de declararla, llamando a la función executeRepetitiveFunction y pasándole un número (5) y una función anónima que simplemente devuelve un valor.
Luego, cuando haya terminado, podemos acceder a nuestros valores llamando a valuePromise.then(valuesArray => {console.log(valuesArray}); o manejándolo como desee.