代码之家  ›  专栏  ›  技术社区  ›  Leon

ArrayBufferLike字体定义的深层含义

  •  3
  • Leon  · 技术社区  · 6 年前

    typescript定义的含义是什么 ArrayBufferLike

    interface ArrayBufferTypes {
        ArrayBuffer: ArrayBuffer;
    }
    type ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes];
    

    据我所知, keyof ArrayBufferTypes 是联合类型的 ArrayBufferTypes

    type Properties = keyof ArrayBufferTypes; // 'ArrayBuffer'
    

    从而 阵列缓冲器 显然等于 ArrayBuffer .

    但肯定有一些不同,否则 阵列缓冲器 定义为 type ArrayBufferLike = ArrayBuffer

    1 回复  |  直到 6 年前
        1
  •  3
  •   artem    6 年前

    ArrayBufferTypes 使用扩展 declaration merging .

    lib.es5.d.ts

    interface ArrayBufferTypes {
        ArrayBuffer: ArrayBuffer;
    }
    

    es2017.sharedmemory.d.ts

    interface ArrayBufferTypes {
        SharedArrayBuffer: SharedArrayBuffer;
    }
    

    当两个类型声明都包含在程序中时,将合并声明并生成联合类型

    type ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes];
    

    ArrayBuffer SharedArrayBuffer .