string
、Buffer
またはの可能性のあるオブジェクトを受け取る関数がありますStream
。
次のように、オブジェクトが Buffer であるかどうかを簡単にテストできます。
if (x instanceof Buffer)
オブジェクトがストリームかどうかをテストする最良の方法は何ですか? ノードにストリーム基本クラスがないようです - ありますか?
何を探すべきですか?
string
、Buffer
またはの可能性のあるオブジェクトを受け取る関数がありますStream
。
次のように、オブジェクトが Buffer であるかどうかを簡単にテストできます。
if (x instanceof Buffer)
オブジェクトがストリームかどうかをテストする最良の方法は何ですか? ノードにストリーム基本クラスがないようです - ありますか?
何を探すべきですか?
Readable
あなたができることのために:
var stream = require('stream');
function isReadableStream(obj) {
return obj instanceof stream.Stream &&
typeof (obj._read === 'function') &&
typeof (obj._readableState === 'object');
}
console.log(isReadableStream(fs.createReadStream('car.jpg'))); // true
console.log(isReadableStream({}))); // false
console.log(isReadableStream(''))); // false
すべてのストリームが および を使用して実装されているわけではありませstream.Readable
んstream.Writable
。
process.stdout instanceof require("stream").Writable; // false
process.stdout instanceof require("readable-stream").Writable; // false
より良い方法は、機能を個別に確認することread(), write(), end()
です。
var EventEmitter = require("events");
function isReadableStream(test) {
return test instanceof EventEmitter && typeof test.read === 'function'
}
function isWritableStream(test) {
return test instanceof EventEmitter && typeof test.write === 'function' && typeof test.end === 'function'
}
いつでも参照できます: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts#L252
探しているプロトタイプは、stream.Readable
読み取り可能なストリームとstream.Writable
書き込み可能なストリームのストリームです。をチェックするときと同じように機能しますBuffer
。