最近,我们使用最新版本的样式化组件6.0.8更新了针对RN072.5的项目
"dependencies": {
...,
"react": "18.2.0",
"react-is": "18.2.0",
"react-native": "0.72.5",
"styled-components": "6.0.7",
"stylis": "^4.0.0"
},
"devDependencies": {
...,
"@types/react": "^18.0.24",
"@typescript-eslint/eslint-plugin": "^5.54.1",
"@typescript-eslint/parser": "^5.54.1",
"@typescript-eslint/typescript-estree": "^5.54.1",
"babel-plugin-styled-components": "^2.1.4",
},
resolutions: {
"styled-components": "^6"
}
字符串
给定以下组件,typescript将 source 和 resizeMode 识别为有效的props
const BlurImage = styled.Image.attrs({
source: blur,
resizeMode: 'stretch'
})`
width: 100%;
height: 100%;
`;
型
但是当我尝试使用组件时,它给我以下错误
的数据
Property source is missing in type {} but required in type
FastOmit<FastOmit<Substitute<ImageProps, ImageProps & RefAttributes<Image>>, never>, never>
型
2条答案
按热度按时间fjnneemd1#
等待一个“更好的解决方案”,我会张贴你我的快速和肮脏的变通办法,如果你需要“尽快使它工作。
我只是输入“可选”我的默认属性。我需要降级
styled-components
到6.0.7
版本,以使它的工作。字符串
通过这种方式,
<BlurImage />
可以在没有 (错误输入) 强制性source
的情况下使用。这不是解决方案,因为具有许多属性的组件变得非常长,无法写入和输入。而且,如果您忘记指定它,则会在执行期间抛出错误,但不会在TS中抛出。你也可以输入
.attrs<Partial<ImageProps>>
,但这更危险,因为隐藏了所有强制 prop 。ckocjqey2#
这是一个不特定的错误,当你忘记传递一个强制属性时(即使它只在你的继承链中的一个组件上是强制的)。它没有告诉是哪一个,但抛出了这个重载错误。这也是
.attrs<Partial<ImageProps>>
帮助的原因-它使每个属性都是可选的。