gpt4 book ai didi

typescript - 为什么我不能在自己的组件上使用 StyleProp

转载 作者:行者123 更新时间:2023-12-04 02:45:46 25 4
gpt4 key购买 nike

我正在使用 TypeScript/Vscode 来编写我的 React Native 应用程序。我希望我的自定义组件上的代码完成就像 React Native 自己的风格一样 View组件。
style Prop View定义如下:

style?: StyleProp<ViewStyle>;

当我在我自己的组件的 props 上尝试它时:
type MyViewProps = { style?:StyleProp<ViewStyle> }
class MyView extends Component<MyViewProps>{ ... }

并尝试以我使用 style 的方式使用它在常规 View 中:
<MyView style={{top:-20}}/>

我收到以下错误:
Type '{ style: { top: number; }; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Pick<MyViewProps, never>, any, any>> & Readonly<Pick<MyViewProps, never>> & Readonly<...>'.
Property 'style' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Pick<MyViewProps, never>, any, any>> & Readonly<Pick<MyViewProps, never>> & Readonly<...>'.ts(2322)

我究竟做错了什么?

(只是为了澄清:该样式在运行时确实可以完美运行,只是我无法开始工作的代码完成/智能感知)

最佳答案

如果您不关心动画 View 。

type MyViewProps = { style?: ViewStyle };

如果你真的关心 Animated.View .

type MaybeAnimated<T> = T | Animated.Value;
type AnimatedScalar = string | number;

type AnimatedStyle<T> = {
[Key in keyof T]: T[Key] extends AnimatedScalar
? MaybeAnimated<T[Key]>
: T[Key] extends Array<infer U>
? Array<AnimatedStyle<U>>
: AnimatedStyle<T[Key]>;
};

像这样使用它。

type MyViewProps = { style?: AnimatedStyle<ViewStyle> };

upvote here too因为它是我找到这个答案的 99% 的地方。 🤠

关于typescript - 为什么我不能在自己的组件上使用 StyleProp<ViewStyle>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57305851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com