我正在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[]
。
代码运行正常,没有任何错误。我很好奇为什么定义不包含数组选项时它可以是单个对象还是数组?
答案 0 :(得分:0)
看起来像DefinitelyTyped的强大定义已经过时了。
作为用户,这是您修复并在此处提交拉取请求的好机会:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/formidable/index.d.ts