for-in statement


TypeScript docs say nothing about loop like for or for-in. From playing with the language it seems that only any or string variables are supported in for loop.

Why has this decision been made?

Why not use the type information and have strongly-typed iteration variable?

This question is tagged with typescript

~ Asked on 2012-10-18 08:51:58

The Best Answer is


In Typescript 1.5 and later, you can use for..of as opposed to

var numbers = [1, 2, 3];

for (var number of numbers) {

~ Answered on 2015-12-09 14:47:07


TypeScript isn't giving you a gun to shoot yourself in the foot with.

The iterator variable is a string because it is a string, full stop. Observe:

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]);

How many key/value pairs are in obj now? 6, more or less? No, 3, and all of the keys are strings:

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

~ Answered on 2012-10-19 21:03:29

Most Viewed Questions: