我有一个附件类,它应该是js文件类型的扩展。
export interface Attachment extends File {
isVideo: boolean;
url: string;
}
export class Attachment implements File {
constructor(file: File) {
Object.assign(this, file);
this.isVideo = file.type.includes('/video');
this.url = URL.createObjectURL(file);
}
}
但是,似乎构造函数中的Object.assign(this, file)
不起作用,因为它试图分配给默认File类型的只读属性。这最终得到了一个只有“isVideo”和“url” prop 的对象,这不是故意的。
我该怎么做?有没有更好的办法?
2条答案
按热度按时间wz8daaqr1#
在TypeScript中,不可能直接扩展或子类化File类型,因为它是一个内置类型,其属性是只读的。但是,您可以围绕File对象创建一个 Package 类来实现类似的功能。
ewm0tg9j2#
创建一个类
extends File
但如果
file
已经在外部创建,则应该忘记extends
,而将其存储为属性