AssemblyScript是否支持扩展运算符(...)?文档未查询到相关说明
AssemblyScript是否支持对象扩展运算符?
AssemblyScript目前不支持对象扩展运算符(...),无法直接使用{ ...params, category: "LockupDynamic" }这类语法实现对象合并。
如果需要实现属性合并的需求,可以通过两种方式替代:
- 手动逐个复制原对象属性,再添加新属性
- 编写通用的对象合并函数复用逻辑
手动赋值示例
// 假设params包含需要复用的属性 const target = { // 复制params的已有属性 name: params.name, duration: params.duration, // 添加新属性 category: "LockupDynamic" };
通用合并函数示例
function mergeObjects<T, U>(base: T, extensions: U): T & U { const result = {} as T & U; // 复制基础对象的属性 for (const key in base) { if (base.hasOwnProperty(key)) { (result as any)[key] = (base as any)[key]; } } // 复制扩展对象的属性(同名属性会被覆盖) for (const key in extensions) { if (extensions.hasOwnProperty(key)) { (result as any)[key] = (extensions as any)[key]; } } return result; } // 使用方式 const target = mergeObjects(params, { category: "LockupDynamic" });
注意:AssemblyScript的类型系统与标准TypeScript存在差异,编写合并逻辑时需确保类型兼容。
内容的提问来源于stack exchange,提问作者Paul Razvan Berg
相关产品推荐
相关产品推荐

