Spead语法不能在Typescript的类中使用

时间:2017-09-17 02:09:57

标签: typescript

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

1 个答案:

答案 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.assignsee browser support)。