我已经使用以下命令成功创建了带有其他字段的函数对象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'}}
只会产生大量错误。似乎我必须强制将实例转换为目标类型,然后分配属性突变样式。
这是不可能的,因为当您使用传播属性时,结果将始终是纯对象。例如,如果您使用一个Date
对象并尝试为其分配其他属性,则将获得一个普通对象而不是Date
对象。
console.log({ ...new Date(), x: 10 } instanceof Date); // false
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句