属性'size'在类型 'unknown' 上不存在



在我的typescript项目中,我有一个来自输入的文件列表,我试图在typescript中运行一个循环,以检查是否有任何文件超过限制,

const allowSize = 104857600; // 100mb
const files = event.target.files;
const hasInValidFileSize = Array.from(files).filter(
(item) => allowSize < item.size // Error line
);

该功能运行良好,但在控制台中,它给了我一个构建错误
TS2339: Property 'size' does not exist on type 'unknown'.

请帮我修复

event.target对Typescript来说是未知的,你应该给它分配一个类型。我不知道代码的正确上下文,但可能是这样的。

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;
})

注意

(<HTMLInputElement>event?.target)?.files

由于文件是HTMLInputElement的属性,我们可以将event.target强制转换为此类型,然后在其上请求文件?标记是潜在的未定义/空值。

编辑:目前尚不清楚您的代码所在的位置,因此我提供了一种不同的写作风格,以防止JSX将类型声明解析为缺少结束标记的HTML元素。

(event?.target as HTMLInputElement)?.files

我只添加了(: any)就解决了这个问题

const files = event.target.files;
const hasInValidFileSize = Array.from(files).filter(
(item: any) => allowSize < item.size
);
`

相关内容

最新更新