有没有办法在props
内为新DefinitelyTyped
声明新的输入?我使用material-ui
组件中的一些新props
更新了SelectField
,但DefinitelyTyped
中的输入已经过时了。我可以通过某种方式SelectField
进行扩展并添加新的props
类型吗?现在我有:
<SelectField
multiple={true}
hintText="Select type"
value={[...this.state.values]}
onChange={this.onChange}
selectionRenderer={this.selectionRenderer}
>
我需要添加multiple?: boolean
和selectionRenderer: (values: any[]) => string
类型。我尝试declare module 'material-ui/SelectField' {}
但它不起作用。有任何想法吗?
答案 0 :(得分:1)
您应该可以使用module augmentation:
declare module "material-ui" {
interface SelectFieldProps {
multiple?: boolean;
selectionRenderer: (values: any[]) => string;
}
}
正如您所看到的,语法与您尝试过的语法略有不同。
如果在SelectFieldProps
命名空间中定义__MaterialUI
,那么这应该有效:
declare module "material-ui" {
namepsace __MaterialUI {
interface SelectFieldProps {
multiple?: boolean;
selectionRenderer: (values: any[]) => string;
}
}
}
答案 1 :(得分:0)
好的,我找到了解决方案,@ Nitzan回答没关系,但需要一些改进。当我查看node_modules/@types/material-ui/index.d.ts
时,我发现在interface SelectFieldProps
中定义namespace __MaterialUI
,所以我必须这样写:
declare namespace __MaterialUI {
interface SelectFieldProps {
multiple?: boolean;
selectionRenderer?: (values: any[]) => string;
}
}
它适用于./src/typings/selectfield.d.ts
,如果我在使用<SelectField />
的同一文件中声明它(可能是因为.d.ts
扩展名)