我使用以下Object.assign
成功创建了一个包含其他字段的函数对象:
Object.assign((a) => {
// Do something....
}, {
x: 10
})
...通过讨论打字稿界面:Implementing TypeScript interface with bare function signature plus other fields
然而,我发现Object.assign语法难以阅读,是否有对象扩展运算符这样做?
简单地将函数和对象放在带有两个点差的大括号中似乎不会削减它:
{...(a) => a, ...{x: 10}}
它在Typescript中出错,似乎跳过了函数签名运行时。
编辑:
基本上我想做以下事情(使用typescript type-markup):
interface IFunc {(a) : string}
interface IStruct {x: number}
type IInteresting = IFunc & IStruct
使用@icepickle的{(a) => a, ...{x: 'y'}}
方法只会产生大量错误。似乎我必须强制将实例强制转换为目标类型,然后分配属性变异样式。
答案 0 :(得分:2)
不,没有。对象扩展语法是对象文字的一部分,它始终创建(非函数)0x3F8
对象。
答案 1 :(得分:2)
这是不可能的,因为当您使用spread属性时,结果将始终是普通对象。例如,如果您使用adapter.setFilter(filteredModelList);
对象并尝试为其分配其他属性,则将获得普通对象而不是Date
对象。
Date