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

How to not add flow type for particular object

我的函数中有一个对象

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

然后我向它添加属性

 someStyle.borderRadius: 15

此处流程抛出错误 无法将 15 分配给 someStyle.borderRadius 因为它在对象文字中丢失

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

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

有几种方法可以解决这个问题:

选项 1:如果您的样式对象始终具有宽度、高度、背景颜色和可选的 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;