Existe-t-il un moyen de faire savoir à une fonction javascript qu'un certain paramètre est d'un certain type?
Être capable de faire quelque chose comme ça serait parfait:
function myFunction(Date myDate, String myString)
{
//do stuff
}
Je vous remercie!
Mise à jour : étant donné que la réponse est un «non» retentissant, si je veux myDate
être traité comme une date (afin d'appeler des fonctions de date dessus), je dois la convertir en date à l'intérieur de la fonction ou définir une nouvelle variable de tapez la date?
Date
, seulementobject
.Date
est une fonction. Jetez un œil à stackoverflow.com/questions/1646698/… pour en savoir plus sur lenew
mot-clé JavaScript . De plus, comme il n'y a pas de classes, il n'y a pas de casting. Vous pouvez simplement appeler les fonctions souhaitées. Si l'objet les contient, ils s'exécuteront, sinon vous obtiendrez une erreur.Réponses:
Non, JavaScript n'est pas un langage de type statique. Parfois, vous devrez peut-être vérifier manuellement les types de paramètres dans votre corps de fonction.
la source
instanceof
ettypeof
pour vous aider. Bien que cela prenne plus de code, c'est peut-être au développeur de choisir JavaScript comme langage pour quelque chose qui dépend en grande partie des types. Quant aux énormes applications backend de nodejs? Je pense que cela devrait être du bon sens.Pas en javascript mais en utilisant le mode avancé de Google Closure Compiler, vous pouvez le faire:
Voir http://code.google.com/closure/compiler/docs/js-for-compiler.html
la source
foo( /*MyType*/ param )
manière décrite ici fonctionne également: stackoverflow.com/a/31420719/1915920Bien que vous ne puissiez pas informer JavaScript du langage sur les types, vous pouvez en informer votre IDE, ce qui vous permet d'obtenir une saisie semi-automatique beaucoup plus utile.
Voici deux façons de procéder:
Utilisez JSDoc , un système de documentation du code JavaScript dans les commentaires. En particulier, vous aurez besoin de la
@param
directive :Vous pouvez également utiliser JSDoc pour définir des types personnalisés et les spécifier dans les
@param
directives, mais notez que JSDoc ne fera aucune vérification de type; ce n'est qu'un outil de documentation. Pour vérifier les types définis dans JSDoc, regardez dans TypeScript , qui peut analyser les balises JSDoc .Utilisez l'indication de type en spécifiant le type juste avant le paramètre dans un
/* comment */
:C'est une technique assez répandue, utilisée par ReactJS par exemple. Très pratique pour les paramètres des rappels passés à des bibliothèques tierces.
Manuscrit
Pour la vérification de type réelle, la solution la plus proche consiste à utiliser TypeScript, un sur-ensemble ( principalement ) de JavaScript. Voici TypeScript en 5 minutes .
la source
VSCode
?vi
est un éditeur abusé, pas un IDE. Vous pouvez faire beaucoup de chosesvi
, tout comme vous pouvez créer des clips vidéo dans Excel . Bonne idée? Probablement pas. Utilisez le bon outil pour le travail.Découvrez la nouvelle bibliothèque Flow de Facebook, "un vérificateur de type statique, conçu pour trouver les erreurs de type dans les programmes JavaScript"
Définition:
Vérification de type:
Et voici comment l'exécuter .
la source
Non, vous devrez plutôt faire quelque chose comme ça en fonction de vos besoins:
la source
Vous pouvez implémenter un système qui gère automatiquement les vérifications de type , en utilisant un wrapper dans votre fonction.
L'implémentation suivante illustre l'idée principale, d'une manière simpliste mais opérationnelle :
la source
Edit: Sept ans plus tard, cette réponse reçoit encore des votes positifs occasionnels. C'est bien si vous recherchez une vérification à l'exécution, mais je recommanderais maintenant la vérification de type à la compilation à l'aide de Typescript, ou éventuellement de Flow. Voir https://stackoverflow.com/a/31420719/610585 ci-dessus pour en savoir plus.
Réponse originale:
Ce n'est pas intégré à la langue, mais vous pouvez le faire vous-même assez facilement. La réponse de Vibhu est ce que je considérerais comme la méthode typique de vérification de type en Javascript. Si vous voulez quelque chose de plus généralisé, essayez quelque chose comme ceci: (juste un exemple pour commencer)
la source
Cela peut facilement être fait avec ArgueJS :
la source
Utilisez
typeof
ouinstanceof
:la source
Peut-être une fonction d'aide comme celle-ci. Mais si vous vous voyez utiliser régulièrement une telle syntaxe, vous devriez probablement passer à Typescript.
la source
J'y ai pensé aussi. À partir d'un arrière-plan C, vous pouvez simuler des types de code de retour de fonction, ainsi que des types de paramètres, en utilisant quelque chose comme ce qui suit:
Le nombre avant la fonction appelante renvoie un type Number quel que soit le type de la valeur réelle renvoyée, comme vu dans le 2ème appel où typeof rc = number mais la valeur est NaN
le console.log pour ce qui précède est:
la source
TypeScript est l'une des meilleures solutions pour le moment
https://www.typescriptlang.org/
la source