【发布时间】: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