传播类型只能从对象类型创建

Posted

技术标签:

【中文标题】传播类型只能从对象类型创建【英文标题】:Spread types may only be created from object types 【发布时间】:2018-07-21 03:42:33 【问题描述】:

我有一个使用 ts 的简单 react-native 组件,它指定了它自己的样式,但是我也想从组件树的上方(即我使用这个组件的地方)传递我可能在它上面使用的任何样式

class RatioImage extends React.Component<Props> 
  render() 
    const  width, ratio, style, ...props  = this.props;
    return (
      <Image
        ...props
        style=
          width: deviceWidth * (width / 100),
          height: deviceWidth * (width / 100) * ratio,
          ...style
        
      />
    );
  

我目前在我的...style 上遇到错误,不知道为什么,因为它应该是一个对象?

[ts] Spread types may only be created from object types.
const style: false | ImageStyle | (number & 
    __registeredStyleBrand: ImageStyle;
) | RecursiveArray<false | ImageStyle | (number & 
    __registeredStyleBrand: ImageStyle;
) | null | undefined> | null | undefined

【问题讨论】:

style 是一个对象吗? 【参考方案1】:

你需要使用数组语法在 react native 中提供多种样式

<Image style=[ width: x, height; y, style] />

见the docs for more info

【讨论】:

以上是关于传播类型只能从对象类型创建的主要内容,如果未能解决你的问题,请参考以下文章

我收到一个错误“传播类型只能从对象 types.ts(2698) 创建”

片段“F1”不能在这里传播,因为“节点”类型的对象永远不能是“商店”类型

从动态类型信息创建新对象

尝试调用外部 VBA 函数时,只能强制在公共对象模块中定义的用户定义类型

SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组

集合增强for泛型