网站搜索

angular - 在 Typescript 中使用文件


我正在使用 Angular 4 和 TypeScript 编写一个网络应用程序。我需要获取要上传的文件的日期,并尝试使用 File 对象的 lastModified 属性,但 TypeScript 给了我一个错误

Property 'lastModified' does not exist on type 'File'.

如果我查看定义,它反而将 lastModifiedDate 作为一个属性。根据 https://developer.mozilla.org/en-US/docs/Web/API/File/lastModifiedDate ,该属性已被弃用。然而,我已经尝试过了,它在 Chrome 中可以使用,但在 Safari 中失败。

我如何在 TypeScript 中使用 File 的 lastModified 属性?

答案#1

尝试

interface MyFile extends File {
    lastModified: any;
}

let myFile = <MyFile>originalFile;
let lm = myFile.lastModified;

答案#2

还有 lastModifiedDate,这个属性已被弃用,但现在在 Chrome 中仍然存在,并且在 IE 中是唯一的选择:

// use non-deprecated lastModified field instead 
new Date(file.lastModified)


// in-line type assertion
(file as unknown as { lastModifiedDate: Date }).lastModifiedDate

// type assertion with special type
type DateFile = File & {
  lastModifiedDate: Date;
};
...
(file as DateFile).lastModifiedDate

将通过使用 lastModified 或断言其存在来防止 TS2551 Property 'lastModifiedDate' does not exist on type 'File'. Did you mean 'lastModified'? ts(2551) 错误。