Tapuscrit fichier de déclaration de fonction avec un nombre variable/type d'arguments
headjs fait très fou JavaScript type de choses à son API. Par exemple, il prend un nombre arbitraire de chaînes (et non pas un tableau de chaîne) pour une fonction. Parfois, il se termine de la même fonction d'appel, vous pouvez éventuellement fin avec une fonction, par exemple.
head.js("scripturl1", "scripturl2",...,callback);
Vous pouvez (facilement) faire
head.js({scriptlabel:"scripturl1"},{scriptlabel2:"scripturl2"},...., callback);
Ma question est de savoir comment le DIABLE ne nous décrivons dans un dossier de déclaration? Je suis toutes les oreilles ici que ma passer le courant semble complètement faux.
- J'ai posté un Tapuscrit demande de fonctionnalité pour ce que c'est un (moyennement utile) le modèle que j'ai vu ailleurs.
Vous devez vous connecter pour publier un commentaire.
Le TS langue spec fait référence à nombre variable/propagation des paramètres comme "Reste " Paramètres". Un exemple d'interface avec une signature de fonction qui accepte de repos params:
Malheureusement, il y a quelques limitations. Le "Reste " Paramètre" doit être le dernier dans une fonction de signature du-de sorte que vous ne serez pas en mesure de capturer le type de la fonction de rappel paramètre, car c'est après la répétition de paramètre.
Si ce n'était pas le cas, vous auriez été capable de faire quelque chose comme ceci:
La déclaration est tout simplement:
Les arguments de la fonction cadre d'une déclaration de fonction en Javascript est simplement consultatif. Lors de l'appel d'une fonction Javascript vous permet d'appeler avec moins de le déclaré que le nombre d'arguments (arguments passés en paramètres par défaut pour
undefined
) ou avec plus d'déclaré le nombre d'arguments.Lorsqu'une fonction est appelée, une les arguments de l'objet est créé. Les arguments de l'objet est un peu comme un tableau (même si ce n'est pas un bon objet Array) qui détient chaque passés en argument.
Ainsi, par exemple, pour gérer infini arguments que vous pouvez tout simplement faire:
Alors maintenant, vous pouvez appeler
foo
comme:Au-delà de cela, c'est simplement une question de typeof, itstanceof etc. pour détecter ce type d'argument est passé en et de les traiter en conséquence.