#typescript #react-native
Вопрос:
В проекте typescript react-native это компонент, который я установил:
type Variants = "body" | "label" | "caption" | "error" | "hint";
interface TextProps {
theme?: DefaultTheme;
// variant?: Omit<keyof Variants, undefined>;
variant?: Variants;
}
export const Text = styled.Text<TextProps>`
${({ theme }) => defaultTextStyles(theme)}
// HERE IS THE ISSUE "variants[variant](theme)"
${({ variant, theme }) => variants[variant](theme)}
`;
Text.defaultProps = {
variant: "body",
};
Если я установлю variant?: Variants
необязательный параметр, я получу эту ошибку от ${({ variant, theme }) => variants[variant](theme)
. Поскольку «вариант» необязателен, он может быть неопределенным, поэтому неопределенный не может использоваться в качестве индекса. Но я также установил
Text.defaultProps = {
variant: "body",
};
вариантом по умолчанию должно быть «тело», но это не срабатывает. Я пробовал их, но ничего не вышло
Text.defaultProps = {
variant: "body",
} as Partial<TextProps>;
Text.defaultProps = {
variant: "body",
} as Pick<TextProps, "variant">;
Комментарии:
1. Я не так часто использую стилизованный компонент, но я думаю, что вы можете решить проблему, установив значение по умолчанию следующим
${({ variant, theme }) => variants[variant ?? "body"](theme)}
образом .