IMO, l’une des préoccupations principales du langage TypeScript est de prendre en charge le code JavaScript Vanilla existant. C'est l'impression que j'ai eu au premier regard. Jetez un oeil à la fonction JavaScript suivante qui est parfaitement valide:
Note: Je ne dis pas que j'aime cette approche. Je dis simplement que c'est un code JavaScript valide.
function sum(numbers) {
var agregatedNumber = 0;
for(var i = 0; i < arguments.length; i++) {
agregatedNumber += arguments[i];
}
return agregatedNumber;
}
Donc, nous consommons cette fonction avec un nombre quelconque d’arguments:
console.log(sum(1, 5, 10, 15, 20));
Cependant, lorsque j'essaie ceci avec TypeScript Playground , cela génère des erreurs de compilation.
Je suppose que c'est un bug. Supposons que nous n’ayons pas de problèmes de compatibilité. Alors, y a-t-il un moyen d'écrire ce type de fonctions avec des arguments ouverts? Tels que params
feature en C #?
La méthode TypeScript consiste à placer l’opérateur Ellipsis (...
) avant le nom de l'argument. Ce qui précède serait écrit comme suit:
function sum(...numbers: number[]) {
var aggregateNumber = 0;
for (var i = 0; i < numbers.length; i++)
aggregateNumber += numbers[i];
return aggregateNumber;
}
Ce sera ensuite tapez vérifier correctement avec
console.log(sum(1, 5, 10, 15, 20));
En plus de @chuckj answer: Vous pouvez également utiliser un arrow function expression
in TypeScript (est une sorte de lambda
in Java/.NET)
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0);
}
Dans TypeScript, le concept Rest Parameter, est le paramètre qui reçoit plusieurs valeurs de type similaire. Si nous ciblons le TypeScript, nous devons écrire le code ECMAScript 6 standard, alors le transpiler TypeScript le convertit en son équivalent Java de script (qui est ECMAScript 5 standard)). Si nous utilisons TypeScript, nous devons utiliser trois points (. ..) preferx avec le nom de variable restparameter, tel que la fonction sum (... numbers: number []), alors cela fonctionnerait.
Remarque: Reste Le paramètre doit être le dernier paramètre de la liste des paramètres. Il en est de même de la fonction sum (nom: chaîne, âge: nombre, ... nombres: nombre []).