我正在查看一些 React Native Typescript 代码,并看到组件采用了 style props。 这些类型为
StyleProp<ViewStyle>
。但这种类型给我带来了问题,比如无法传播道具(例如,我可能想传播以覆盖backgroundColor
)。
interface Props {
aStyleProp: StyleProp<ViewStyle>
}
所以我只是将
aStyleProp
输入为 ViewStyle
。
不使用
StyleProp
我会失去一些重要的东西吗?
查看
StyleProp
的类型定义(从“react-native”导入),我并不觉得 RegisteredStyle<T>
和 RecursiveArray
是其可能的类型更明智。
StyleProp<ViewStyle>
接受的类型范围比 ViewStyle
更广。
StyleProp<T>
的定义:
export type StyleProp<T> =
| T
| RegisteredStyle<T>
| RecursiveArray<T | RegisteredStyle<T> | Falsy>
| Falsy;
因此,当涉及
StyleProp<ViewStyle>
时,它不仅接受 ViewStyle
类型,还接受 ViewStyle
数组和 Falsy
类型,转换为 false || null || undefined
。
这意味着,例如,这对于
StyleProp<ViewStyle>
有效,但对于 ViewStyle
无效:
style={[styles.style1, styles.style2]}
- 样式数组style={undefined}
- 任意 Falsy
值