Ist die Verwendung React.PropTypes
in einer TypeScript React-Anwendung sinnvoll oder handelt es sich nur um "Gürtel und Hosenträger"?
Da die Komponentenklasse mit einem Props
Typparameter deklariert ist:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
Gibt es einen wirklichen Vorteil beim Hinzufügen?
static propTypes {
myProp: React.PropTypes.string
}
zur Klassendefinition?
Typescript und PropTypes dienen unterschiedlichen Zwecken. Typescript überprüft Typen zur Kompilierungszeit , während PropTypes zur Laufzeit überprüft werden .
Typoskript ist nützlich, wenn Sie Code schreiben: Es warnt Sie, wenn Sie ein Argument des falschen Typs an Ihre React-Komponenten übergeben, eine automatische Vervollständigung für Funktionsaufrufe usw. durchführen.
PropTypes sind nützlich, wenn Sie testen, wie die Komponenten mit externen Daten interagieren, z. B. wenn Sie JSON von einer API laden. PropTypes hilft Ihnen beim Debuggen (im Entwicklungsmodus von React), warum Ihre Komponente ausfällt, indem hilfreiche Meldungen wie die folgenden gedruckt werden:
Auch wenn es so aussieht, als ob Typescript und PropTypes dasselbe tun, überlappen sie sich überhaupt nicht. Es ist jedoch möglich, PropTypes automatisch aus Typescript zu generieren, sodass Sie Typen nicht zweimal angeben müssen, siehe zum Beispiel:
quelle
Ich denke, dass in einigen chaotischen Situationen, in denen der Typ der Requisiten zur Kompilierungszeit nicht abgeleitet werden kann, es nützlich wäre, alle Warnungen zu sehen, die durch die Verwendung
propTypes
zur Laufzeit generiert wurden.Eine solche Situation besteht darin, Daten aus einer externen Quelle zu verarbeiten, für die keine Typdefinitionen verfügbar sind, z. B. eine externe API, auf die Sie keinen Einfluss haben. Für interne APIs ist es meiner Meinung nach die Mühe wert, Typdefinitionen zu schreiben (oder besser zu generieren), wenn sie nicht bereits verfügbar sind.
Davon abgesehen sehe ich keinen wirklichen Nutzen (weshalb ich ihn nie persönlich genutzt habe).
quelle