diesen Code:Argument des Typs 'Element' ist nicht zuordenbare Parameter des Typs ‚ReactElement <any>
import * as React from 'react';
const Component =() => <div/>;
function culprit<P>(node: React.ReactElement<P>) {
console.log(node);
}
culprit(<Component/>);
... erzeugt diese Kompilierungsfehler, wenn sie mit Typoskript Kompilieren:
error TS2345: Argument of type 'Element' is not assignable to parameter of type 'ReactElement<any>'.
Type 'null' is not assignable to type 'ReactElement<any>
Dieses nur passiert, wenn die strictNullChecks Typoskript Kompilierung-Flag auf true
gesetzt.
Ja, ich könnte das Flag deaktivieren, aber ich will es auf für zusätzliche Übersetzungszeit/Sicherheit zu überprüfen.
Wenn ich die letzte Zeile, um diese Änderung:
culprit((<Component/> as React.ReactElement<any>));
... es funktioniert mit der Flagge auf true
gesetzt.
Ich habe kürzlich versucht, in einem React-Projekt von "normalem" JavaScript zu TypeScript zu migrieren, was alle meine Tests austricksen lässt. Das Hinzufügen all dieser TypeScript-Assertions zu all diesen Vorkommen im Testcode wird ein Schmerz sein.
Ist das ein Bug oder habe ich keine andere Wahl? Diese
Ich habe 'versucht @ Typen/react' Versionen 15.0.6, 15.0.4, 15.0.0 und alle von ihnen nach wie vor das Problem für mich produzieren, leider. – pleasedesktop
Version 0.14.57 funktioniert, aber das war vor dem Union-Typ mit '| null wurde eingeführt (was Sie anscheinend versucht haben, mich zu bekommen). Dennoch reagieren soll, um Funktionen erlauben zu machen null zurück, so dass ich glaube nicht, das Reagieren Typ-Definition falsch ist, glaube ich, alle Typdefinitionen, die für 'null' nicht erlaubt haben, müssen aktualisiert. Ich habe diese "Schuld" -Funktionssignatur von Enzyme.js erhalten, so dass ihre Typdefinitionen aktualisiert werden müssen. – pleasedesktop
15.0.4 behebt mein Problem, aber ich denke, Sie müssen etwas anderes tun (oder etwas anderes in Ihrem Setup haben). –