如何不为特定对象添加流类型

时间:2019-06-06 07:21:22

标签: reactjs flowtype

我的函数中有一个对象

let someStyle = {
    width: 200,
    backgroundColor: 'blue'
    height: 40,
}

然后向其中添加属性

 someStyle.borderRadius: 15

这里的流程引发了错误,由于对象文字中缺少15,因此无法为someStyle.borderRadius分配15

如何禁用someStyle对象的流?我在someStyle上方尝试了// @flow-disable,但没有成功

此外,如果我们执行//@flow,是否必须为所有对象定义类型?在我的无状态函数中?

1 个答案:

答案 0 :(得分:2)

有几种解决方法:

选项1:如果样式对象始终具有这种形状的宽度,高度,backgroundColor和可选的borderRadius,那么您可能只想像这样定义对象的类型:

/* @flow */

type Style = {
    width: number,
    height: number,
    backgroundColor: string,
    borderRadius?: number
}
let someStyle: Style = {
    width: 200,
    backgroundColor: 'blue',
    height: 40,
}

 someStyle.borderRadius = 15;

选项2:如果您的样式对象并非总是具有这种形状,而是可以应用任何通用样式,那么您将需要更通用的东西。

/* @flow */

type Style = {
    [string]: mixed
}
let someStyle: Style = {
    width: 200,
    backgroundColor: 'blue',
    height: 40,
}

 someStyle.borderRadius = 15;

选项3:如果您只想抑制该错误,则通常可以这样做:

/* @flow */

let someStyle = {
    width: 200,
    backgroundColor: 'blue',
    height: 40,
}

// $FlowFixMe
 someStyle.borderRadius = 15;