📝

TypeScriptでReadableStreamの型エラー解決

2022/03/27に公開
2

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

kk

ReadableStream -> blob がやりたかったのでとても参考になりました!
(一応ですが)当方の環境では ReadableStreamReadResult<Uint8Array> は定義しなくともUint8Array | undefinedとして推論されてました🙇‍♂️

NakamuraNakamura

お役に立てて嬉しいです^^
情報提供もありがとうございます。