📝
TypeScriptでReadableStreamの型エラー解決
MDNのストリームを読むをTypeScriptで書き直したときに、型エラー解決に苦戦してしまったため、忘備録です。
const response = await fetch(' url ')
const reader = (response.body as ReadableStream).getReader();
const stream = new ReadableStream({
start(controller) {
return (function pump(): void | PromiseLike<void> {
return reader.read().then(
({ done, value }: ReadableStreamReadResult<Uint8Array>) => {
if (done) {
return controller.close()
}
controller.enqueue(value)
return pump()
})
})()
}
})
const data = await new Response(stream).arrayBuffer() // or blob(), text(), json(), formData()
Discussion
ReadableStream -> blob がやりたかったのでとても参考になりました!
(一応ですが)当方の環境では
ReadableStreamReadResult<Uint8Array>
は定義しなくともUint8Array | undefined
として推論されてました🙇♂️お役に立てて嬉しいです^^
情報提供もありがとうございます。