【发布时间】:2018-05-30 18:29:12
【问题描述】:
我正在创建一个拖放界面。在下降时,我得到了原生的File。我需要扩展这个接口并包含一些其他信息。
我的第一个方法是使用
interface AcceptedFile extends File {
acl: Acl,
disabled: boolean;
}
const toAcceptedFiles = (files: File[]): AcceptedFile[] => {
return files.map(file => {
return {
...file,
acl: Acl.Public,
disabled: false
}
});
}
然而,函数toAcceptedFiles的结果,只包含来自File的preview键;所有的斑点、名称等都消失了。如果我在toAcceptedFiles 中console.log file,我可以看到所有的键。
有趣的是,以下界面可以正常工作:
interface AcceptedFile {
file: File,
acl: Acl,
disabled: boolean;
}
为什么扩展 File 会破坏它?
【问题讨论】:
-
我很确定您可能不能只复制本机
File对象,同时还期望它继续工作。它可能有一些您根本无法访问的内部属性(例如,存储数据的内存指针或特定于浏览器的东西)。因此,您可能应该将其包装在自定义对象中,而不是将其复制到自定义类型。
标签: javascript typescript type-conversion typescript-typings