Wie definiert man generischen Typ in reagieren zustandslose Komponenten basierend auf Parameter oder außerhalb Konfiguration?Typescript Reagieren zustandslose Funktion mit generischen Parameter/Rückgabetypen
Beispiel Komponenten:
interface IProps<V> {
value: V;
doSomething: (val: V) => void;
}
const Comp: React.SFC<IProps<number>> = <T extends number>({
value: T,
doSomething
}) => {
return <div />;
}
obiges Beispiel wird funktionieren, aber nur mit Zahlen als Werte.
ist möglich, aktualisiere so etwas wie zu erreichen:
const Comp: React.SFC<IProps<??>> = <?? extends string | number>({
value, /* of type ?? */
doSomething
}) => {
return <div />;
}
Damit wir, was wir wollen Zahlen entscheiden können, oder Strings, wenn Komponente.
Wunsch Nutzung:
// This should setup generic type to string
<Comp value="string" ... />
// Or number
<Comp value={123} ... />
// Should be compilation error as we cannot use * on 'text' * 5
<Comp value="text" doSomething={val => val * 5} />
Edit: Sollte gleiche Arbeit wie function
tut:
function Comp <T>({value, doSomething}: IProps<T>) { ... }
SFC-Typ hat Definition:
interface SFC<P> {
(props: P & { children?: ReactNode }, context?: any): ReactElement<any>;
...
}
scheint zu funktionieren, da nur neugierig ist, wenn .. Auch nicht etwas einfacher Weg ist, 'GenericsSFC' iRequisiten benötigt, die innerhalb Komponente eingegeben werden, so ist es wahrscheinlich am besten auch im Inneren GenericSFC zu halten ... Wahrscheinlich am besten kann sein, nur typisierte Funktion zu behalten und SFC überhaupt nicht für Generika zu verwenden: o – Jurosh