Я пытаюсь внедрить машинописный текст в свой проект, и у меня возникают проблемы с указанием типов опор для моей опоры смахивания. Оба они правильного типа, но при указании этого типа я получаю сообщение об ошибке в строке 72:
style={[styles.container, isFirst && animatedCardStyle]}
В сообщении об ошибке написано: Введите «false | {преобразование: ({[ключ: строка]: значение;} | {поворот: AnimatedInterpolation;}) []; } 'нельзя присвоить типу' false | Значение | AnimatedInterpolation | Зарегистрированный стиль | WithAnimatedObject | WithAnimatedArray ‹...› | только для чтения (false | ... еще 5 ... | undefined) [] | null | неопределенный'. Введите '{преобразование: ({[ключ: строка]: Animated.Value;} | {поворот: Animated.AnimatedInterpolation;}) []; } 'нельзя присвоить типу' false | Значение | AnimatedInterpolation | Зарегистрированный стиль | WithAnimatedObject | WithAnimatedArray ‹...› | только для чтения (false | ... еще 5 ... | undefined) [] | null | неопределенный'. Введите '{преобразование: ({[ключ: строка]: Animated.Value;} | {поворот: Animated.AnimatedInterpolation;}) []; } 'не может быть назначен типу WithAnimatedObject. Типы, возвращаемые функцией transform.pop (), несовместимы между этими типами. Тип '{[ключ: строка]: значение; } | {поворот: AnimatedInterpolation; } | undefined »нельзя присвоить типу« WithAnimatedObject | WithAnimatedObject | WithAnimatedObject | ... еще 10 ... | неопределенный'. Тип '{[ключ: строка]: значение; } 'не может быть назначен типу' WithAnimatedObject | WithAnimatedObject | WithAnimatedObject | ... еще 10 ... | неопределенный'. Свойство 'matrix' отсутствует в типе '{[key: string]: Value; } ', но требуется в типе WithAnimatedObject. index.d.ts (818, 5): здесь объявляется матрица.
Я действительно не понимаю, что это означает, хотя мое приложение работает и работает, я не знаю ошибки, я тоже могу использовать любой тип, и это тоже устраняет эту проблему. Любая помощь была бы замечательной!
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;