代码之家  ›  专栏  ›  技术社区  ›  Yilmaz

如果我将“variant”设置为oprial,我会得到“Type'undefined'不能用作索引类型”

  •  0
  • Yilmaz  · 技术社区  · 5 年前

    在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">;
    
    
    0 回复  |  直到 5 年前
    推荐文章