代码之家  ›  专栏  ›  技术社区  ›  Old Geezer

联合型-强大的成果

  •  1
  • Old Geezer  · 技术社区  · 6 年前

    我正在使用 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 回调中的对象具有键为的属性 文件夹 类型的(名称的使用非常混乱) File . 在调试器中,它显示为:

    对象(文件:文件)

    如果上载了两个文件, files.files 属于类型 File[] .

    代码工作正常,没有任何错误。我很好奇为什么当定义遗漏了array选项时,它可以是单个对象,也可以是数组?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Madara's Ghost    6 年前

    似乎对可怕的定义已经过时了。

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