如何为Material-UI组件正确使用TypeScript模块扩充?

时间:2018-09-05 14:54:37

标签: javascript reactjs typescript material-ui

我已经阅读了现有的答案herehere,但它们似乎已经过时了。

我已经尝试了以下方法来增加按钮组件的类型定义,无论是在单独的键入文件(.d.ts)中还是在react组件本身中,都无济于事。

declare module "@material-ui/core/Button" {
  export interface ButtonProps {
    to?: string;  
  }
}

当放入单独的.d.ts文件时,我得到一个'JSX元素类型'Button'没有任何构造或调用签名。'错误。

如果与组件本身放在同一文件中,则编译器只会抱怨属性'to'在类型'IntrinsicAttributes&ButtonProps&{children ?: ReactNode; }',好像什么都没有定义。

所以我想知道当前在material-ui(v3.0.2)中增加组件类型定义的正确方法。

谢谢您的欢呼

1 个答案:

答案 0 :(得分:2)

ButtonProps接口实际上是在@material-ui/core/Button/Button模块中声明的。组件文件中的以下代码应该可以工作:

declare module "@material-ui/core/Button/Button" {
  export interface ButtonProps {
    to?: string;  
  }
}