【发布时间】:2017-11-04 14:28:00
【问题描述】:
我已经使用以下Object.assign 成功创建了一个带有附加字段的函数对象:
Object.assign((a) => {
// Do something....
}, {
x: 10
})
...通过对 typescript 接口的讨论:Implementing TypeScript interface with bare function signature plus other fields
但是,我发现 Object.assign 语法难以阅读,是否有 object spread operator 方法可以做到这一点?
简单地将函数和对象放在带有两个扩展的大括号中似乎并没有减少它:
{...(a) => a, ...{x: 10}}
它在 Typescript 中出现错误,并且似乎跳过了函数签名运行时。
编辑:
基本上我想做以下事情(使用打字稿类型标记):
interface IFunc {(a) : string}
interface IStruct {x: number}
type IInteresting = IFunc & IStruct
使用@icepickle 的{(a) => a, ...{x: 'y'}} 方法只会产生大量错误。似乎我必须强制将实例转换为目标类型,然后分配属性突变样式。
【问题讨论】:
-
在仔细阅读 Object.assign 的 MDN 之后,它的第一个参数不是回调函数。我不确定你想用它实现什么
-
@user2340824 函数也可以分配属性:)。不知道
{ (a) => a, ...{x: 10} }会不会剪了?
标签: javascript typescript ecmascript-next