首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型“SharedArrayBuffer”不能赋值给类型“ArrayBuffer”

类型“SharedArrayBuffer”不能赋值给类型“ArrayBuffer”
EN

Stack Overflow用户
提问于 2018-09-21 00:16:16
回答 1查看 762关注 0票数 5

我已经将我的应用程序从angular 4升级到angular 6。我得到以下错误。错误出现在return data.buffer行。这是es兼容性问题吗?

代码语言:javascript
复制
error TS2322: Type 'ArrayBuffer | SharedArrayBuffer' is not assignable to type 'Arr
ayBuffer'.
  Type 'SharedArrayBuffer' is not assignable to type 'ArrayBuffer'.
    Types of property '[Symbol.toStringTag]' are incompatible.
      Type '"SharedArrayBuffer"' is not assignable to type '"ArrayBuffer"'.

代码

代码语言:javascript
复制
serialize(): ArrayBuffer {
        let source: ArrayLike<number>[] = this.contents.map(o => new Uint8Array(o));
        let lengths = source.map(o => this.numToArr(o.length));
        if (!!this.value) {
            const bytes = utf8.toByteArray(JSON.stringify(this.value, null, null));
            const dataLength = this.numToArr(bytes.length);
            source = [bytes, ...source];
            lengths = [dataLength, ...lengths];
        }

        const totalLength = source.reduce((acc, o) => acc + o.length, 0) + lengths.reduce((acc, o) => acc + o.length, 0);

        const data = new Uint8Array(totalLength);
        let offset = 0;
        source.forEach((item, index) => {
            const prefix = lengths[index];
            data.set(prefix, offset);
            offset += prefix.length;
            data.set(item, offset);
            offset += item.length;
        });

        return data.buffer;
    }
EN

回答 1

Stack Overflow用户

发布于 2019-02-22 01:59:09

使用适当的类型转换,如下所示:

代码语言:javascript
复制
return data.buffer as ArrayBuffer;

或者定义一个可以接受ArrayBuffer或SharedArrayBuffer的变量,如下所示:

代码语言:javascript
复制
pdf: ArrayBuffer | SharedArrayBuffer;
...

...
this.pdf = data.buffer;
return this.pdf;

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52429299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档