En mi proyecto de mecanografiado, tengo una lista de archivos que provienen de una entrada, estoy tratando de ejecutar un bucle en mecanografiado para verificar si hay algún archivo que exceda el límite.
const allowSize = 104857600; // 100mb const files = event.target.files; const hasInValidFileSize = Array.from(files).filter( (item) => allowSize < item.size // Error line ); La funcionalidad funciona bien, pero en la consola me da un error de compilación.
TS2339: Property 'size' does not exist on type 'unknown'.
por favor ayúdame a arreglar
El event.target es desconocido para Typescript, debe asignarle un tipo. No conozco el contexto adecuado del código, pero quizás algo como esto.
document.querySelector('#test')?.addEventListener('change', function(event) { const allowSize = 104857600; // 100mb const files = (<HTMLInputElement>event?.target)?.files; if (!files) return; const hasInValidFileSize = Array.from(files).filter( (item) => allowSize < item.size // No more error ); return hasInValidFileSize; })Observe la
(<HTMLInputElement>event?.target)?.filesDado que los archivos son una propiedad de HTMLInputElement, podemos convertir event.target en este tipo y luego solicitar archivos en él, ? las marcas son valores potenciales indefinidos/vacíos.
EDITAR: no está claro dónde reside su código, por lo que estoy ofreciendo un estilo diferente de escritura para evitar que JSX analice la declaración de tipo como un elemento HTML con una etiqueta de cierre faltante.
(event?.target as HTMLInputElement)?.filesHe resuelto este problema simplemente agregando (: any)
const files = event.target.files; const hasInValidFileSize = Array.from(files).filter( (item: any) => allowSize < item.size ); `