Ich habe eine React-Komponente, die mit einem generischen typisiert ist. Diese Komponente wiederum wird mit einer Komponente höherer Ordnung (in diesem Fall Redux-Form) erweitert. Hier ist eine abisoliert Version meiner Klasse und die HOC angewendet:Verwenden von HOCs auf Generic Typescript React Components
import * as React from "react";
interface MyFormProps<D> {
prop: D;
form: string;
}
class MyForm<D> extends React.Component<MyFormProps<D>, {}> {
render(): JSX.Element {
return (
<form>
{this.props.prop}
</form>
);
}
}
export const ConnectedMyForm = reduxForm({} as Config<any, {}, {}>)(MyForm);
Dann versuche ich eine typisierte Version meiner Komponente in einer anderen Komponente zu erstellen.
import { ConnectedMyForm } from "./my-form";
interface FormType {
// Form props here
}
type TypedForm = new() => ConnectedMyForm<FormType>;
const TypedForm = ConnectedMyForm as TypedForm;
Um wie folgt zu können, um es in TSX verwenden:
<TypedForm />
Diese Methode funktioniert absolut in Ordnung auf einer anderen Komponente I aufgebaut haben, die nicht HOC angewendet hat aber hier bekomme ich der folgende Fehler:
error TS2304: Cannot find name 'ConnectedMyForm'.
auf der type TypedForm = new() => ConnectedMyForm<FormType>;
Zeile.
Dies passiert nur, wenn ich die HOC-Funktion auf meine Komponente anwenden. Ich schätze, es liegt daran, dass ich die generische Typisierung für die verbundene Version des Formulars nicht angegeben habe. Aber wie würde ich diese Eingabe angeben?
Ich bekomme, was Sie versuchen zu tun, aber ich versuche, einer der Requisiten des Formulars einen generischen Typ zu geben, nicht t Stellen Sie das gesamte Props-Objekt mit einem generischen Objekt zusammen. Im Grunde versuche ich ein Formular zu erstellen, das einen Typ als den Typ der Daten akzeptiert, die in dem Formular dargestellt werden. Zur Zeit wird es nur als "any" getippt, was funktioniert, aber es wäre schön, wenn man die Formulardaten richtig tippen würde. – Simon
Oder vielleicht fehlt mir etwas? – Simon