在typescript react原生项目中,这是我设置的组件:
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)
.由于“variant”是可选的,它可以是未定义的,因此未定义不能用作索引。但我也设定了
Text.defaultProps = {
variant: "body",
};
默认变量应该是“body”,但这不会生效。我试过了,但没用
Text.defaultProps = {
variant: "body",
} as Partial<TextProps>;
Text.defaultProps = {
variant: "body",
} as Pick<TextProps, "variant">;