84 votes

déclaration de prise en charge

La documentation TypeScript ne dit rien sur les boucles du type for o for-in . En jouant avec la langue, il semble que seul any o string sont prises en charge dans les for boucle.

Pourquoi cette décision a-t-elle été prise ?

Pourquoi ne pas utiliser les informations de type et avoir des variables d'itération fortement typées ?

139voto

brianbruff Points 21

Dans Typescript 1.5 et les versions ultérieures, vous pouvez utiliser for..of par opposition à for..in

var numbers = [1, 2, 3];

for (var number of numbers) {
    console.log(number);
}

73voto

Ryan Cavanaugh Points 17393

TypeScript ne vous donne pas un pistolet pour vous tirer une balle dans le pied.

La variable itérateur est une chaîne de caractères car il s'agit d'une chaîne de caractères , point final. Observer :

var obj = {};
obj['0'] = 'quote zero quote';
obj[0.0] = 'zero point zero';
obj['[object Object]'] = 'literal string "[object Object]"';
obj[<any>obj] = 'this obj'
obj[<any>undefined] = 'undefined';
obj[<any>"undefined"] = 'the literal string "undefined"';

for(var key in obj) {
    console.log('Type: ' + typeof key);
    console.log(key + ' => ' + obj[key]);
}

Combien de paires clé/valeur y a-t-il dans obj maintenant ? 6, plus ou moins ? Non, 3, et toutes les touches sont des cordes :

Type: string
0 => zero point zero
Type: string
[object Object] => this obj; 
Type: string
undefined => the literal string "undefined"

32voto

Steve Fenton Points 55265

L'instruction for-in sert en réalité à énumérer les propriétés d'un objet, et c'est ainsi qu'elle est mise en œuvre dans TypeScript. Il y a quelques problèmes liés à l'utilisation de l'outil sur des tableaux .

Je ne peux pas parler au nom de l'équipe TypeScript, mais je crois que c'est la raison de l'implémentation dans le langage.

21voto

citykid Points 1786

éditer 2018 : C'est dépassé, js et typescript ont maintenant des pour de boucles.
http://www.typescriptlang.org/docs/handbook/iterators-and-generators.html


Le livre "TypeScript Revealed" dit

"Vous pouvez parcourir les éléments d'un tableau en utilisant des boucles for ou for..in, comme démontré ici :

// standard for loop
for (var i = 0; i < actors.length; i++)
{
  console.log(actors[i]);
}

// for..in loop
for (var actor in actors)
{
  console.log(actor);
}

"

Il s'avère que la deuxième boucle fait pas faire passer les acteurs dans la boucle. On pourrait donc dire que c'est tout simplement faux. Malheureusement, c'est comme ci-dessus, les boucles ne sont pas touchées par le typage.

carte y forEach m'aident souvent et sont dues à des améliorations de la typographie sur des définitions de fonctions plus accessibles, comme en ce moment même :

this.notes = arr.map(state => new Note(state));

Ma liste de souhaits pour TypeScript ;

  1. Collections génériques
  2. Itérateurs (les interfaces IEnumerable, IEnumerator seraient les meilleures)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X