Quantcast
Channel: Active questions tagged react-native+typescript - Stack Overflow
Viewing all articles
Browse latest Browse all 6287

Unsure what type my prop is in react native typescript

$
0
0

I am trying to implement typescript into my project and I am having issues giving prop types to my swipe prop. They are both the correct type but when giving this type I get an error on line 72:

style={[styles.container, isFirst && animatedCardStyle]}

The error says: Type'false | { transform: ({ [key: string]: Value; } | { rotate: AnimatedInterpolation; })[]; }' is not assignable to type 'false | Value | AnimatedInterpolation | RegisteredStyle | WithAnimatedObject | WithAnimatedArray<...> | readonly (false | ... 5 more ... | undefined)[] | null | undefined'.   Type '{ transform: ({ [key: string]: Animated.Value; } | { rotate: Animated.AnimatedInterpolation; })[]; }' is not assignable to type 'false | Value | AnimatedInterpolation | RegisteredStyle | WithAnimatedObject | WithAnimatedArray<...> | readonly (false | ... 5 more ... | undefined)[] | null | undefined'.     Type '{ transform: ({ [key: string]: Animated.Value; } | { rotate: Animated.AnimatedInterpolation; })[]; }' is not assignable to type 'WithAnimatedObject'.       The types returned by 'transform.pop()' are incompatible between these types.         Type '{ [key: string]: Value; } | { rotate: AnimatedInterpolation; } | undefined' is not assignable to type 'WithAnimatedObject | WithAnimatedObject | WithAnimatedObject | ... 10 more ... | undefined'.           Type '{ [key: string]: Value; }' is not assignable to type 'WithAnimatedObject | WithAnimatedObject | WithAnimatedObject | ... 10 more ... | undefined'.             Property 'matrix' is missing in type '{ [key: string]: Value; }' but required in type 'WithAnimatedObject'. index.d.ts(818, 5): 'matrix' is declared here.

I am really confused what this means, although my app runs and works I dont know the error, I can use the any type too and it clears this issue up too. Any help would be great!

import React, {useCallback} from 'react';    import {LinearGradient} from 'expo-linear-gradient';    import {Animated, Image, ImageSourcePropType, Text} from 'react-native';    import Choice from '../Choice';    import {ACTION_OFFSET} from '../Utils/constants';    import {styles} from './styles';    type Props = {        name: string,        source: ImageSourcePropType,        isFirst: boolean,        swipe: Animated.AnimatedValueXY,        tiltSign: Animated.AnimatedValue,    };    const Card = ({                      name,                      source,                      isFirst,                      swipe,                      tiltSign,                      ...rest                  }: Props) => {        const rotate = Animated.multiply(swipe.x, tiltSign).interpolate({            inputRange: [-ACTION_OFFSET, 0, ACTION_OFFSET],            outputRange: ['8deg', '0deg', '-8deg'],        });        const likeOpacity = swipe.x.interpolate({            inputRange: [25, ACTION_OFFSET],            outputRange: [0, 1],            extrapolate: 'clamp',        });        const nopeOpacity = swipe.x.interpolate({            inputRange: [-ACTION_OFFSET, -25],            outputRange: [1, 0],            extrapolate: 'clamp',        });        const animatedCardStyle = {            transform: [...swipe.getTranslateTransform(), {rotate}],        };        const renderChoice = useCallback(() => {            return (<><Animated.View                        style={[                            styles.choiceContainer,                            styles.likeContainer,                            {opacity: likeOpacity},                        ]}><Choice type="like"/></Animated.View><Animated.View                        style={[                            styles.choiceContainer,                            styles.nopeContainer,                            {opacity: nopeOpacity},                        ]}><Choice type="nope"/></Animated.View></>            );        }, [likeOpacity, nopeOpacity]);        return (<Animated.View                style={[styles.container, isFirst && animatedCardStyle]}                {...rest}><Image source={source} style={styles.image}/><LinearGradient                    colors={['transparent', 'rgba(0,0,0,0.9)']}                    style={styles.gradient}                /><Text style={styles.name}>{name}</Text>                {isFirst && renderChoice()}</Animated.View>        );    }    export default Card;

Viewing all articles
Browse latest Browse all 6287

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>