【问题标题】:What should be the type of createReadStream in TypeScript?TypeScript 中 createReadStream 的类型应该是什么?
【发布时间】:2020-06-24 10:09:21
【问题描述】:

我正在尝试使用打字稿。 createReadStream 的类型 应该是什么?我在 github

上的 DefinitelyTyped link 中找到了来自 fs.d.ts 文件的类型声明

更新

我要做的是从前端上传文件。在后端(基本上是节点)上,我收到了一个文件对象。在破坏文件对象时,我得到以下信息。

const { createReadStream, filename, mimetype, encoding } = await file;

有什么办法,我可以用这种类型吗?

更新问题

现在,我应该如何添加我收到的 file 对象的类型 函数参数下面给出的函数?

export const processUpload = async (file, DestinationDir) {

}

在官方node/fs.d.ts文件中找到类型

function createReadStream(path: PathLike, options?: string | {
        flags?: string;
        encoding?: string;
        fd?: number;
        mode?: number;
        autoClose?: boolean;
        /**
         * @default false
         */
        emitClose?: boolean;
        start?: number;
        end?: number;
        highWaterMark?: number;
    }): ReadStream;

代码示例

export const processUpload = async (
  file:
    | PromiseLike<{
        createReadStream: /** WHAT SHOULD BE THE TYPE */;
        filename: string;
        mimetype: string;
        encoding: string;
      }>
    | {
        createReadStream: /** WHAT SHOULD BE THE TYPE */;
        filename: string;
        mimetype: string;
        encoding: string;
      },

  { DestinationDir = "default" }: { DestinationDir: string }
) => {
  const { createReadStream, filename, mimetype, encoding } = await file;
  const stream = createReadStream();
  
  /** SOME CODE */ 

  return /*SOME RETURN TYPE*/
};

【问题讨论】:

  • npm install --save-dev @types/fs
  • 我试过了,好像包不存在。
  • https://www.npmjs.com/package/@types/filesystem
  • @ritaj,我找到了链接。但是,如果你能分享一个sn-p,那将会很有帮助。谢谢
  • 标题中的问题和正文中的问题完全不同。你不是在问createReadStream 的类型应该是什么。您在问是否可以以某种方式神奇地将createReadStream 应用于特定文件。答案是:不,不是。我的意思是,你可以这样做:import * as fs from "fs"; const {filename, /*...*/} = await file; const createReadStream = fs.createReadStream.bind(fs, filename);,但它不会给你带来任何有用的东西。

标签: node.js typescript fs


【解决方案1】:

我认为你可以使用这个:

import { ReadStream } from "fs-capacitor";

export interface FileUpload {
  createReadStream(): ReadStream;
  filename: string;
  mimetype: string;
  encoding: string;
}

【讨论】:

    【解决方案2】:

    fs.createReadStream 返回一个ReadStream 对象。此外,TypeScript 不希望您为 fs.createReadStream 提供类型。

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 2018-12-05
      • 2021-02-19
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 2018-10-13
      相关资源
      最近更新 更多