TypeScript 中 createReadStream 的类型应该是啥?

Posted

技术标签:

【中文标题】TypeScript 中 createReadStream 的类型应该是啥?【英文标题】: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);,但它不会给你带来任何有用的东西。 【参考方案1】:

我认为你可以使用这个:

import  ReadStream  from "fs-capacitor";

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


【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于TypeScript 中 createReadStream 的类型应该是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在typescript项目中引入如何js依赖

typescript TypeScript中键入的Redux操作和Reducer的问题

深入浅出TypeScript- 在React项目中使用TypeScript

使用 typescript-eslint 在 VSCode 编辑器中未显示 Typescript 错误

如何使用 TypeScript 2.3 中新增的支持来限制 TypeScript 中 React Children 的类型?

现代浏览器中的 TypeScript 支持