Gibt es eine Möglichkeit, eine Javascript-Funktion wissen zu lassen, dass ein bestimmter Parameter von einem bestimmten Typ ist?
In der Lage zu sein, so etwas zu tun, wäre perfekt:
function myFunction(Date myDate, String myString)
{
//do stuff
}
Danke dir!
Update : Da die Antwort ein klares "Nein" ist myDate
, muss ich sie als Datum in die Funktion umwandeln oder eine neue Variable von setzen , wenn ich als Datum behandelt werden möchte (um Datumsfunktionen darauf aufzurufen) Typ Datum dazu?
javascript
function
dmr
quelle
quelle
Date
, nurobject
.Date
ist eine Funktion. Weitere Informationen zum JavaScript-new
Schlüsselwort finden Sie unter stackoverflow.com/questions/1646698/… . Da es keine Klassen gibt, gibt es auch kein Casting. Sie können einfach die gewünschten Funktionen aufrufen. Wenn das Objekt sie enthält, werden sie ausgeführt, andernfalls wird eine Fehlermeldung angezeigt.Antworten:
Nein, JavaScript ist keine statisch typisierte Sprache. Manchmal müssen Sie möglicherweise die Parametertypen in Ihrem Funktionskörper manuell überprüfen.
quelle
instanceof
undtypeof
, um dies zu unterstützen. Obwohl dies mehr Code beansprucht, liegt es möglicherweise am Entwickler, JavaScript als Sprache für etwas zu wählen, das weitgehend vom Typ abhängt. Wie für riesige NodeJS Backend-Anwendungen? Ich denke, es sollte gesunder Menschenverstand sein.Nicht in Javascript selbst, aber mit dem erweiterten Modus von Google Closure Compiler können Sie Folgendes tun:
Siehe http://code.google.com/closure/compiler/docs/js-for-compiler.html
quelle
foo( /*MyType*/ param )
hier beschriebene Weg auch funktioniert: stackoverflow.com/a/31420719/1915920Während Sie JavaScript die Sprache nicht über Typen informieren können, können Sie Ihre IDE darüber informieren, sodass Sie eine viel nützlichere automatische Vervollständigung erhalten.
Hier sind zwei Möglichkeiten, dies zu tun:
Verwenden Sie JSDoc , ein System zum Dokumentieren von JavaScript-Code in Kommentaren. Insbesondere benötigen Sie die
@param
Richtlinie :Sie können JSDoc auch verwenden, um benutzerdefinierte Typen zu definieren und diese in
@param
Anweisungen anzugeben. Beachten Sie jedoch, dass JSDoc keine Typprüfung durchführt. Es ist nur ein Dokumentationswerkzeug. Um die in JSDoc definierten Typen zu überprüfen, schauen Sie in TypeScript nach , mit dem JSDoc-Tags analysiert werden können .Verwenden Sie Typhinweise, indem Sie den Typ direkt vor dem Parameter in a angeben
/* comment */
:Dies ist eine ziemlich weit verbreitete Technik, die beispielsweise von ReactJS verwendet wird . Sehr praktisch für Parameter von Rückrufen, die an Bibliotheken von Drittanbietern übergeben werden.
Typoskript
Für die eigentliche Typprüfung besteht die beste Lösung darin, TypeScript zu verwenden, eine ( meistens ) Obermenge von JavaScript. Hier ist TypeScript in 5 Minuten .
quelle
VSCode
?vi
ist ein übermäßig missbrauchter Editor, keine IDE. Sie können eine Menge Dinge erledigenvi
, genauso wie Sie Musikvideos in Excel erstellen können . Gute Idee? Wahrscheinlich nicht. Verwenden Sie das richtige Werkzeug für den Job.Schauen Sie sich die neue Flow- Bibliothek von Facebook an, "eine statische Typprüfung, mit der Typfehler in JavaScript-Programmen gefunden werden können".
Definition:
Typprüfung:
Und hier erfahren Sie, wie Sie es ausführen .
quelle
Nein, stattdessen müssten Sie je nach Ihren Anforderungen Folgendes tun:
quelle
Sie können ein System implementieren, das die Typprüfungen automatisch durchführt , indem Sie einen Wrapper in Ihrer Funktion verwenden.
Die folgende Implementierung veranschaulicht die Hauptidee auf vereinfachte, aber operative Weise :
quelle
Edit: Sieben Jahre später erhält diese Antwort immer noch gelegentlich positive Stimmen. Es ist in Ordnung, wenn Sie nach einer Laufzeitprüfung suchen, aber ich würde jetzt empfehlen, die Typprüfung zur Kompilierungszeit mit Typescript oder möglicherweise Flow zu überprüfen. Weitere Informationen finden Sie oben unter https://stackoverflow.com/a/31420719/610585 .
Ursprüngliche Antwort:
Es ist nicht in die Sprache eingebaut, aber Sie können es ganz einfach selbst tun. Vibhus Antwort ist die typische Art der Typprüfung in Javascript. Wenn Sie etwas allgemeineres möchten, versuchen Sie Folgendes: (nur ein Beispiel, um Ihnen den Einstieg zu erleichtern)
quelle
Mit ArgueJS geht das ganz einfach :
quelle
Verwenden Sie
typeof
oderinstanceof
:quelle
Vielleicht funktioniert so ein Helfer. Wenn Sie jedoch feststellen, dass Sie diese Syntax regelmäßig verwenden, sollten Sie wahrscheinlich zu Typescript wechseln.
quelle
Ich habe auch darüber nachgedacht. Auf einem C-Hintergrund können Sie Funktionsrückgabecodetypen sowie Parametertypen mithilfe der folgenden Methoden simulieren:
Die Nummer vor der aufrufenden Funktion gibt einen Nummerntyp zurück, unabhängig vom Typ des tatsächlich zurückgegebenen Werts, wie im zweiten Aufruf gezeigt, wobei typeof rc = number ist, der Wert jedoch NaN ist
Das console.log für das oben Genannte lautet:
quelle
TypeScript ist derzeit eine der besten Lösungen
https://www.typescriptlang.org/
quelle