TypeScript material-ui允许在@types中定义的道具

时间:2017-04-27 02:48:13

标签: reactjs typescript material-ui jestjs

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

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

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

这很好用。现在我正在切换到TypeScript,并拥有@ types / material-ui。打字稿抱怨id prop:

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

我做错了吗?有没有办法压制这个?我知道该组件支持传递id。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我最终创建了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/**/*" ],

这解决了我的问题