Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript process.stdout,tty$WriteStream。此类型与流不兼容。可写_Javascript_Flowtype - Fatal编程技术网

Javascript process.stdout,tty$WriteStream。此类型与流不兼容。可写

Javascript process.stdout,tty$WriteStream。此类型与流不兼容。可写,javascript,flowtype,Javascript,Flowtype,所以我得到了这个类型错误,它没有多大意义 src/bins/assembler.js:19 19: compileTo(module, stdout); ^^^^^^ tty$WriteStream. This type is incompatible with 11: export function compileTo(repr: ir.Module, target: stream.Writable)

所以我得到了这个类型错误,它没有多大意义

src/bins/assembler.js:19
 19:            compileTo(module, stdout);
                                  ^^^^^^ tty$WriteStream. This type is incompatible with
 11: export function compileTo(repr: ir.Module, target: stream.Writable) {
                                                        ^^^^^^^^^^^^^^^ stream$Writable. See: src/asm/output.js:11
澄清stdout是process.stdout

据我所知,stdout是一个流。可写的,我在实现中检查了,是的,它是

declare class Process extends events$EventEmitter {
  ...
  stdout : stream$Writable | tty$WriteStream;
  ...
}

declaration var process: Process;
不知道我做错了什么。。。但我今天使用的是最新版本的flow

$ flow version
> Flow, a static type checker for JavaScript, version 0.25.0
就像我试图实现的一样,有一个函数可以编写一个通用输出,比如一个文件,或者在本例中是stdout,根据我对stream的理解。writeable就是这种类型,stdout根据它的声明订阅它的接口

我的假设是正确的,还是我误解了stdout定义中的|运算符?我在compileTo中的输入是否需要更明确?或者是我在设置流程时做错了什么

这是我第一个使用flow的项目,因此我可能会错过一些非常明显的东西…

如指定的,类型可以是stream$writeable或tty$WriteStream。由于compileTo函数只接受声明stream.Writable,该声明仅由stream$Writable解析,因此只能传递与此类型匹配的参数

如果我们更仔细地看另一个声明,tty$WriteStream的解析不能分配给Stream.writeable

要使其工作,只需添加两种类型作为可能的参数

function compileTo(repr: ir.Module, target: stream.Writable | tty.WriteStream) {}
如果不希望仅为定义导入tty模块,请使用类型的全局定义

function compileTo(repr: ir.Module, target: stream$Writable | tty$WriteStream) {}
function compileTo(repr: ir.Module, target: stream$Writable | tty$WriteStream) {}