使用对象散布运算符构造具有字段的功能对象

约根·特维特(JørgenTvedt)

我已经使用以下命令成功创建了带有其他字段的函数对象Object.assign

Object.assign((a) => {
        // Do something....
    }, {
        x: 10
    })

...通过对Typescript接口的讨论来实现:用裸函数签名和其他字段实现TypeScript接口

但是,我发现Object.assign语法很难读懂,是否有一种对象散布运算符来做到这一点?

简单地将函数和对象放在带有两个跨度的大括号中似乎并不能解决问题:

{...(a) => a, ...{x: 10}}

它在Typescript中给出错误,并且似乎跳过了函数签名运行时。

编辑:

基本上,我想执行以下操作(使用打字稿类型标记):

interface IFunc {(a) : string}
interface IStruct {x: number}
type IInteresting = IFunc & IStruct

使用@icepickle的方法{(a) => a, ...{x: 'y'}}只会产生大量错误。似乎我必须强制将实例转换为目标类型,然后分配属性突变样式。

MichałPerłakowski

这是不可能的,因为当您使用传播属性时,结果将始终是纯对象。例如,如果您使用一个Date对象并尝试为其分配其他属性,则将获得一个普通对象而不是Date对象。

console.log({ ...new Date(), x: 10 } instanceof Date); // false

在Babel REPL中尝试此操作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有人可以解释这种动态对象散布运算符语法吗?

Microsoft Edge中的对象散布运算符抛出错误

使用散布运算符更新数组对象的对象值

如何使用对象解构散布运算符删除多个对象属性

如何使用散布运算符将对象推入特定对象的数组

std ::查找具有重载==运算符的对象的向量

在具有可选属性的对象中使用扩展运算符时出错

使用散布和解构运算符修改不可变对象的最短方法是什么

如何使用散布运算符来展平JavaScript中的对象数组

如何使用对象指针而不是对象编写赋值运算符/ copy构造函数?

没有新运算符的对象

传播带有对象的运算符

在对象上使用::运算符

我可以重载使用指针和非构造模板对象的运算符吗?

C ++对象构造-直接初始化与使用'='运算符是否等效?

Java是否通过new运算符隐式使用构造函数(或对象)?

使用运算符 new 和placement new 创建非默认可构造对象的动态数组

构造对象时如何使用三元运算符?

为什么要使用删除的move构造函数和赋值运算符移动对象?

具有提取对象字段的函数和将应用于这些字段的二元运算符的方法声明

具有传播运算符的Typescript构造函数

当没有非const运算符重载时,非const对象会使用const运算符吗?

'is'运算符不适用于具有相同标识的对象

具有一个排除的扩展运算符以合并对象

具有堆成员的对象上的二进制运算符

Qt-具有重载运算符的<< DataDataStream <<用于对象指针(Class *)

如何在TypeScript中使用类型安全的对象散布来更新不可变的对象

通过使用AngularJS的OR运算符仅过滤对象中的特定字段

JavaScript-对象中散布运算符的位置/顺序重要吗?