我在Express项目中使用formidable
模块。
formidable
的输入文件包含以下内容:
export interface Files {
[key: string]: File; // | File[];
}
export interface File {
name: string;
//...
}
export declare class IncomingForm extends events.EventEmitter {
//..
parse(req: http.IncomingMessage,
callback?: (err: any, fields: Fields, files: Files) => any): void;
}
请注意// | File[]
的注释,用于定义Files
。
我使用parse
方法获取在浏览器上传的文件。实际测试表明,当只上传一个文件时,回调中的files
对象具有files
类型的密钥File
(非常混淆使用名称)的属性。在调试器中,它显示为:
对象(文件:文件)
如果上传了两个文件,则files.files
的类型为File[]
。
代码工作正常,没有任何错误。我很好奇为什么当定义省略数组选项时它可以是单个对象还是数组?
似乎强大的DefinitelyTyped定义已过时。
作为用户,这是一个很好的机会,你可以在这里修复它并提交拉取请求:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/formidable/index.d.ts