TypeScript代码如下:
interface ChildrenPropsType {
children: Array<TheElement<any>>
}
class TheElement<PropsType extends object> {
props: PropsType & ChildrenPropsType;
constructor(props: PropsType, children: ChildrenPropsType) {
this.props = {
children:children,
...props
}
}
}
错误:TS2698:只能从对象类型创建Spread类型。
如何解决此错误?
tsc --version
Version 2.5.2
答案 0 :(得分:0)
问题记录在https://github.com/Microsoft/TypeScript/issues/12759
的github上一种解决方法是直接使用Object.assign()
- 请记住,与扩展运算符不同,assign
修改第一个参数 - 因此始终传入一个空对象:
interface ChildrenPropsType {
children: Array<TheElement<any>>
}
class TheElement<PropsType> {
props: PropsType & ChildrenPropsType;
constructor(props: PropsType, children: ChildrenPropsType) {
this.props = Object.assign(
{},
children,
props
);
}
}
您可能还需要填充Object.assign
(see browser support)。