联盟类型 - 令人生畏的结果
Union Type - formidable results
我正在 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;
}
注意 Files
的定义注释掉 // | File[]
。
我使用 parse
方法在浏览器上获取上传的文件。实际测试表明,当只上传一个文件时,回调中的 files
对象有一个 属性 with key files
(非常混乱的名称使用)类型 File
。在调试器中显示为:
Object (files: File)
如果上传两个文件,files.files
类型为File[]
。
代码运行良好,没有任何错误。我很好奇为什么当定义省略了数组选项时它可以是单个对象或数组?
好像 formidable 的 DefinitelyTyped 定义已经过时了。
作为用户,这是您修复它并在此处提交拉取请求的好机会:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/formidable/index.d.ts
我正在 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;
}
注意 Files
的定义注释掉 // | File[]
。
我使用 parse
方法在浏览器上获取上传的文件。实际测试表明,当只上传一个文件时,回调中的 files
对象有一个 属性 with key files
(非常混乱的名称使用)类型 File
。在调试器中显示为:
Object (files: File)
如果上传两个文件,files.files
类型为File[]
。
代码运行良好,没有任何错误。我很好奇为什么当定义省略了数组选项时它可以是单个对象或数组?
好像 formidable 的 DefinitelyTyped 定义已经过时了。
作为用户,这是您修复它并在此处提交拉取请求的好机会:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/formidable/index.d.ts