联合类型-强大的结果

时间:2018-09-04 06:38:02

标签: typescript typescript-typings formidable

我正在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[]

代码运行正常,没有任何错误。我很好奇为什么定义不包含数组选项时它可以是单个对象还是数组?

1 个答案:

答案 0 :(得分:0)

看起来像DefinitelyTyped的强大定义已经过时了。

作为用户,这是您修复并在此处提交拉取请求的好机会:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/formidable/index.d.ts