process.stdout,tty$WriteStream。此类型与 stream.Writable 不兼容
process.stdout, tty$WriteStream. This type is incompatible with 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
To clarify stdout
is process.stdout
根据我的理解 stdout
是一个 stream.Writable
,我检查了实现中的 type of stdout
来确定,是的它是...
declare class Process extends events$EventEmitter {
...
stdout : stream$Writable | tty$WriteStream;
...
}
declaration var process: Process;
不确定我做错了什么...但我使用的是最新版本的流(截至今天)
$ flow version
> Flow, a static type checker for JavaScript, version 0.25.0
就像我想要完成的是拥有一个写入通用输出(例如文件)的函数,或者在这种情况下 stdout
,据我了解 stream.Writable
是那种类型, stdout
根据它的声明订阅它的接口...
我的假设是否正确,还是我误解了 stdout
定义中 |
运算符的要点?我是否必须对 compileTo
中的类型进行更详细的说明?还是我在设置 flow
时做错了什么?
这是我的第一个流程项目,所以我可能会错过一些非常明显的东西...
根据 stdout
declaration 的规定,类型可以是 stream$Writable
或 tty$WriteStream
。由于您的 compileTo
函数仅接受仅由 stream$Writable
解析的声明 stream.Writable
,因此您只能传递与此类型匹配的参数。
如果我们仔细观察其他声明,tty$WriteStream
的分辨率不能分配给 Stream.Writable
。
declare class tty$WriteStream extends net$Socket
declare class net$Socket extends stream$Duplex
declare class stream$Duplex extends stream$Readable
要使其工作,只需添加这两种类型作为可能的参数。
function compileTo(repr: ir.Module, target: stream.Writable | tty.WriteStream) {}
如果您不想为了定义也导入 tty
模块,请使用类型的全局定义。
function compileTo(repr: ir.Module, target: stream$Writable | tty$WriteStream) {}
所以我收到了这个类型错误,而且没有多大意义
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
To clarify
stdout
isprocess.stdout
根据我的理解 stdout
是一个 stream.Writable
,我检查了实现中的 type of stdout
来确定,是的它是...
declare class Process extends events$EventEmitter {
...
stdout : stream$Writable | tty$WriteStream;
...
}
declaration var process: Process;
不确定我做错了什么...但我使用的是最新版本的流(截至今天)
$ flow version
> Flow, a static type checker for JavaScript, version 0.25.0
就像我想要完成的是拥有一个写入通用输出(例如文件)的函数,或者在这种情况下 stdout
,据我了解 stream.Writable
是那种类型, stdout
根据它的声明订阅它的接口...
我的假设是否正确,还是我误解了 stdout
定义中 |
运算符的要点?我是否必须对 compileTo
中的类型进行更详细的说明?还是我在设置 flow
时做错了什么?
这是我的第一个流程项目,所以我可能会错过一些非常明显的东西...
根据 stdout
declaration 的规定,类型可以是 stream$Writable
或 tty$WriteStream
。由于您的 compileTo
函数仅接受仅由 stream$Writable
解析的声明 stream.Writable
,因此您只能传递与此类型匹配的参数。
如果我们仔细观察其他声明,tty$WriteStream
的分辨率不能分配给 Stream.Writable
。
declare class tty$WriteStream extends net$Socket
declare class net$Socket extends stream$Duplex
declare class stream$Duplex extends stream$Readable
要使其工作,只需添加这两种类型作为可能的参数。
function compileTo(repr: ir.Module, target: stream.Writable | tty.WriteStream) {}
如果您不想为了定义也导入 tty
模块,请使用类型的全局定义。
function compileTo(repr: ir.Module, target: stream$Writable | tty$WriteStream) {}