You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript/Node.js中process.stdin的正确类型及兼容定义方法

类型说明与解决方案

各返回值的类型归属

  • process.stdin的类型是NodeJS.ReadStream,属于stream.Readable的子类
  • fs.createReadStream()的返回值类型是fs.ReadStream,同样属于stream.Readable的子类
  • 两者都不属于net.Socket类型,net.Socket是TCP网络套接字对应的专属类型,和文件流、标准输入流无关

你给出的声明方式存在问题

原声明代码有两个错误:

  1. 类型匹配错误:fs.ReadStream不能赋值给NodeJS.ReadStream类型,二者是平级的不同子类,没有继承关系
  2. 语法错误:变量已经提前声明了类型,赋值时不能再加: any的类型注解,该写法不符合TS语法规范,即便要强制类型转换也应该用as any断言

替换any的正确类型

方案1:通用可读流类型(最推荐)

如果你后续只使用所有可读流通用的API(比如pipe、监听data/end事件、read()方法等),直接使用stream.Readable作为类型即可,兼容性最高:

import type { Readable } from 'stream';
const input: Readable = filePath ? fs.createReadStream(filePath) : process.stdin;

方案2:联合类型

如果你需要用到两类流各自独有的属性或方法,可以使用联合类型:

import type { ReadStream as FsReadStream } from 'fs';
const input: FsReadStream | NodeJS.ReadStream = filePath ? fs.createReadStream(filePath) : process.stdin;

内容的提问来源于stack exchange,提问作者Jeff Pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:05