javascript 无法获取对象属性,因为undefined中缺少属性宽度

qfe3c7zg  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(98)

我有一个glamor css函数,当我运行flowJS时,这个函数有一个这样的错误,大小在哪里?是一个具有填充和宽度字符串对象。

Error ------------------------------------------------------------ src/Components/Button/Button.component.style.js:38:17

Cannot get size.width because property width is missing in undefined [1]. [incompatible-use]

 [1] 34|   size?: Option
     35| ): $Shape<CSSStyleDeclaration> =>
     36|   compose(baseStyle, {
     37|     backgroundColor: bgColor,
     38|     width: size.width,
     39|     padding: size.padding,
     40|     color: textColor
     41|   });

字符串
我的css魅力函数:

export const setStyleButton = (
  bgColor?: string,
  textColor?: string,
  size?: Option
): $Shape<CSSStyleDeclaration> =>
  compose(baseStyle, {
    backgroundColor: bgColor,
    width: size.width,
    padding: size.padding,
    color: textColor
  }`);


我的流程类型:

// @flow
export type Option = {|
  padding:string,
  width:string
|}

export type Options = {|
  [key:string] : Option
|}

export type Props = {|
  name: string,
  color?: string,
  textColor?: string,
  size?: Option,
  onPress: () => void,
  disabled: boolean,
|};


有人可以帮助我解决我的问题如何定义对象属性上的flowjs

8cdiaqws

8cdiaqws1#

因为你是可选地传递大小(即size?: Option),您需要确保对其属性的引用是空安全的。
所以呢

width: size.width,
    padding: size.padding,

字符串
将成为

width: size?.width,
    padding: size?.padding,


如果width和padding不接受可选值,则需要在设置它们之前执行null检查。类似于:

if (!size?.width) {
  throw new Error('Options.width is required')
}

相关问题