使用给定类型的缓冲区会导致 TextEncoder.encode() 产生什么结果?

问题描述 投票:0回答:1

TextEncoder.encode()
的返回值为
Uint8Array<ArrayBufferLike>
ArrayBufferLike
类型包括
ArrayBuffer
SharedArrayBuffer
。如何知道
encode()
将使用哪种类型的数组缓冲区?可以配置吗?为什么不直接使用
ArrayBuffer

typescript arraybuffer sharedarraybuffer
1个回答
0
投票

我不认为存在这样的情况:

TextEncoder
的实例可以创建由
Uint8Array
支持的
SharedArrayBuffer
——由返回的类型化数组上的
buffer
属性编码器的
encode
方法将始终是
ArrayBuffer
的实例。


TypedArray
最近才被通用(大约一个月前发布的TS 5.7版本/原始 PR)——在此之前,所有类型化数组都专门使用
ArrayBufferLike
类型作为后备二进制存储,并且不能不要输入更狭窄的内容。

在某些情况下,拥有

SharedArrayBuffer
确实很有用——例如自带缓冲区场景,例如文本编码器的
encodeInto
方法。

这可能只是 DOM 库类型(source)中的一个疏忽,并且将来可以/将会缩小范围。

© www.soinside.com 2019 - 2024. All rights reserved.