如何模拟流类型兼容的dom类文件

时间:2017-08-24 18:54:53

标签: mocha flowtype

我正在尝试使用mocha规范来制作由流类型强制执行的File

以下产生^^^^^^ object literal. This type is incompatible with File

这样做的正确方法是什么?

/**
 *
 *   declare class Blob {
 *    constructor(blobParts?: Array<any>, options?: {
 *      type?: string;
 *      endings?: string;
 *    }): void;
 *    isClosed: bool;
 *    size: number;
 *    type: string;
 *    close(): void;
 *    slice(start?: number, end?: number, contentType?: string): Blob;
 *  }
 *  
 *   declare class File extends Blob {
 *    constructor(
 *      fileBits: $ReadOnlyArray<string | BufferDataSource | Blob>,
 *      filename: string,
 *      options?: FilePropertyBag,
 *    ): void;
 *    lastModifiedDate: any;
 *    name: string;
 *  }
 *  
 * @param name
 * @param type
 * @returns {*}
 */
function newFile (name: string, type?: string): File {
  const result = { name, type }
  return (result: File)
}

1 个答案:

答案 0 :(得分:0)

Flow使用"nominal typing"来表示类。这意味着只有具有相同键和值类型的对象才能代表类的实际实例。我怀疑最好的办法就是创建自己的File子类来覆盖你想要的字段/方法。如果您覆盖字段/方法,则可能需要查看variance rules,以便从子类中获取类型错误。