diff --git a/types/redux-form/lib/Field.d.ts b/types/redux-form/lib/Field.d.ts
index 81a3e4a517..b84954657b 100644
--- a/types/redux-form/lib/Field.d.ts
+++ b/types/redux-form/lib/Field.d.ts
@@ -4,7 +4,10 @@ import {
ReactElement,
ChangeEvent,
DragEvent,
- FocusEvent
+ FocusEvent,
+ InputHTMLAttributes,
+ SelectHTMLAttributes,
+ TextareaHTMLAttributes
} from "react";
import { Dispatch } from "redux";
@@ -34,7 +37,7 @@ interface BaseFieldProps
extends Partial {
withRef?: boolean;
}
-export interface GenericField extends Component {
+export interface GenericField extends Component & P> {
dirty: boolean;
name: string;
pristine: boolean;
@@ -42,12 +45,14 @@ export interface GenericField extends Component {
getRenderedComponent(): Component;
}
-export class Field extends Component implements GenericField {
+type GenericFieldHTMLAttributes = InputHTMLAttributes | SelectHTMLAttributes | TextareaHTMLAttributes;
+
+export class Field extends Component & P> implements GenericField {
dirty: boolean;
name: string;
pristine: boolean;
value: any;
- getRenderedComponent(): Component;
+ getRenderedComponent(): Component;
}
interface WrappedFieldProps {
diff --git a/types/redux-form/lib/FieldArray.d.ts b/types/redux-form/lib/FieldArray.d.ts
index 5b6e9dc73b..724f1f19c6 100644
--- a/types/redux-form/lib/FieldArray.d.ts
+++ b/types/redux-form/lib/FieldArray.d.ts
@@ -11,16 +11,16 @@ interface BaseFieldArrayProps {
rerenderOnEveryChange?: boolean;
}
-export interface GenericFieldArray extends Component {
+export interface GenericFieldArray extends Component & P> {
name: string;
valid: boolean;
getRenderedComponent(): Component & P>;
}
-export class FieldArray extends Component implements GenericFieldArray {
+export class FieldArray extends Component & P> implements GenericFieldArray {
name: string;
valid: boolean;
- getRenderedComponent(): Component>;
+ getRenderedComponent(): Component & P>;
}
interface WrappedFieldArrayProps {
diff --git a/types/redux-form/lib/Fields.d.ts b/types/redux-form/lib/Fields.d.ts
index 29e06a519a..d3a29dcb13 100644
--- a/types/redux-form/lib/Fields.d.ts
+++ b/types/redux-form/lib/Fields.d.ts
@@ -10,20 +10,20 @@ interface BaseFieldsProps {
withRef?: boolean;
}
-export interface GenericFields
extends Component {
+export interface GenericFields extends Component & P> {
dirty: boolean;
names: string[];
pristine: boolean;
values: { [name: string]: any };
- getRenderedComponent(): Component;
+ getRenderedComponent(): Component;
}
-export class Fields extends Component implements GenericFields {
+export class Fields extends Component & P> implements GenericFields {
dirty: boolean;
names: string[];
pristine: boolean;
values: { [name: string]: any };
- getRenderedComponent(): Component;
+ getRenderedComponent(): Component;
}
interface WrappedFieldsProps {
diff --git a/types/redux-form/redux-form-tests.tsx b/types/redux-form/redux-form-tests.tsx
index 99bc239778..71ff7206da 100644
--- a/types/redux-form/redux-form-tests.tsx
+++ b/types/redux-form/redux-form-tests.tsx
@@ -172,6 +172,7 @@ const Test = reduxForm({