【问题标题】:TypeScript material-ui allow props not defined in @typesTypeScript material-ui 允许未在 @types 中定义的道具
【发布时间】:2017-09-24 15:51:20
【问题描述】:

我在测试中使用 React、material-ui、Flow、Jest 进行了快照设置。

为了创建一致的快照,我需要在我的 material-ui 组件中定义 id,否则它们会自动生成并且每次都不同。

所以我这样做了: <Card style = { style } id = { id ?${ id }-card: null }>

这很好用。现在我正在切换到 TypeScript,并拥有 @types/material-ui。 Typescript 抱怨 id 属性:

[ts] Property 'id' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Card> ...

我做错了吗?有没有办法抑制这种情况?我知道组件支持传递 id。

【问题讨论】:

    标签: reactjs typescript material-ui jestjs


    【解决方案1】:

    我最终创建了typings/material-ui/index.d.ts

    declare namespace __MaterialUI
    {
       interface SelectFieldProps
       {
          multiple?: boolean;
          selectionRenderer?: (values: any[]) => string;
       }
    
       namespace Card
       {
          interface CardProps
          {
             id?: string;
          }
    
          interface CardHeaderProps
          {
             id?: string;
          }
    
          interface CardTitleProps
          {
             id?: string;
          }
    
          interface CardActionsProps
          {
             id?: string;
          }
    
          interface CardTextProps
          {
             id?: string;
          }
       } 
    }
    

    和 tsconfig:

    "include": [ "./components/**/*", "./typings/**/*" ],

    这解决了我的问题

    【讨论】:

      【解决方案2】:

      source code for that definition,确实不支持id属性。

      如果您认为这是一个错误,我会向 DefinitiveTyped 提交拉取请求!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        相关资源
        最近更新 更多