TextEncoder.encode()
的返回值为Uint8Array<ArrayBufferLike>
。 ArrayBufferLike
类型包括ArrayBuffer
和SharedArrayBuffer
。如何知道encode()
将使用哪种类型的数组缓冲区?可以配置吗?为什么不直接使用ArrayBuffer
?
TextEncoder
的实例可以创建由Uint8Array
支持的SharedArrayBuffer
——由返回的类型化数组上的buffer
属性编码器的encode
方法将始终是ArrayBuffer
的实例。
TypedArray
最近才被通用(大约一个月前发布的TS 5.7版本/原始 PR)——在此之前,所有类型化数组都专门使用 ArrayBufferLike
类型作为后备二进制存储,并且不能不要输入更狭窄的内容。
在某些情况下,拥有
SharedArrayBuffer
确实很有用——例如自带缓冲区场景,例如文本编码器的 encodeInto
方法。
这可能只是 DOM 库类型(source)中的一个疏忽,并且将来可以/将会缩小范围。