arguments de la fonction ouvertes avec la machine à écrire

voix
82

L' OMI, l' une des principales préoccupations de la tapuscrit langue est de soutenir le code JavaScript existant de vanille. Telle est l'impression que j'avais au premier coup d' œil. Jetez un oeil à la fonction JavaScript suivante qui est parfaitement valide:

Note: Je ne dis pas que j'aime cette approche. Je dis simplement ceci est un code JavaScript valide.

function sum(numbers) { 

    var agregatedNumber = 0; 
    for(var i = 0; i < arguments.length; i++) { 
        agregatedNumber += arguments[i];
    }

    return agregatedNumber;
}

Nous consommons donc cette fonction avec un certain nombre d'arguments:

console.log(sum(1, 5, 10, 15, 20));

Cependant, lorsque je tente avec ce tapuscrit Playground , il donne des erreurs de compilation de temps.

Je suppose que c'est un bug. Supposons que nous n'avons pas les problèmes de compatibilité. Alors, est - il possible d'écrire ce type de fonctions avec des arguments ouvertes? Tels que paramscaractéristique en C #?

Créé 02/10/2012 à 20:52
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
195

La façon dactylographiée de le faire est de placer l'opérateur de points de suspension ( ...) avant le nom de l'argument. Le ci - dessus serait écrit,

function sum(...numbers: number[]) {
    var aggregateNumber = 0;
    for (var i = 0; i < numbers.length; i++)
        aggregateNumber += numbers[i];
    return aggregateNumber;
}

Ce tapera alors vérifier correctement

console.log(sum(1, 5, 10, 15, 20));
Créé 02/10/2012 à 20:57
source utilisateur

voix
2

En plus de @chuckj Réponse: Vous pouvez également utiliser une expression lambda dactylographiée

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
Créé 19/03/2017 à 09:37
source utilisateur

voix
0

Dactylographiée est le concept de repos paramètre , il est le paramètre qui reçoit plusieurs valeurs de type.If similaires nous cibler le tapuscrit alors nous devons écrire le code ECMAScript 6 standard, puis tapuscrit transpiler convertit à son code java script équivalent ( qui est ECMAScript 5 standard) .Si nous utilisons tapuscrit alors nous devons utiliser trois points (...) preferx avec le nom de la variable de restparameter, comme somme de fonction (... numéros: nombre []), il travaillerait alors.

Remarque: Le repos paramètre doit être le dernier paramètre dans la fonction somme paramètre list.likewise (nom: string, age: nombre, ... numéros: nombre []).

Créé 10/05/2018 à 06:56
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more