ProgramGuru

for...in Loop

Learn for...in Loop

A for...in loop enumerates enumerable string property keys on an object, including inherited enumerable keys.

In this lesson, you will study the rule, run a complete TypeScript example, explain its output, and test a small change.

What you’ll learn

  • Explain the main rule behind for...in loop.
  • Predict the result of the complete runnable TypeScript example.
  • Recognize one common mistake and correct it.

Understand the concept

It differs from for...of: for...in is about keys, not iterable values. Use it with care on arrays because their indexes become string keys and additional enumerable properties can appear. For own object keys, Object.keys is often the clearer choice.

Run a complete TypeScript example

Save this code as main.ts or paste it into the TypeScript Playground. The example uses fixed values so it runs without prompting for input.

TypeScript code

const scores: Record<string, number> = { Ana: 80, Ben: 90 };
 for (const name in scores) {
   if (Object.prototype.hasOwnProperty.call(scores, name)) {
     console.log(`${name}: ${scores[name]}`);
   }
 }

Verified output

Ana: 80
Ben: 90

How to run locally: npx tsc --strict --target es2022 --module commonjs main.ts, then node main.js. When using a project configuration, run the matching project build instead.

Trace the execution

The loop enumerates Ana and Ben as keys in this ordinary object example. The own-property check excludes keys inherited through the prototype chain.

Predict the output before you run the sample. Compare each line with the source expression that produced it, and distinguish the type checker’s work from what happens in JavaScript at runtime.

Common mistakes and how to avoid them

Do not assume for...in iterates array elements or excludes inherited enumerable properties automatically.

Debugging habit: when a change is rejected, read the exact compiler diagnostic and inspect the operand types. When it compiles but behaves unexpectedly, follow the values through the JavaScript expressions.

Practice it yourself

Try Object.keys(scores) with for...of and compare the output. Add a new score and inspect the keys.

Challenge: write down your prediction first, run the changed source, and explain any difference. Return to the verified version before continuing.

Check your understanding

What does for...in enumerate?
Choose one answer. You can try again.

Answer and explanation

Enumerable string property keys.

for...in is property enumeration, not the iterable value loop.

Review the key idea

for...in Loop: It differs from for.

for...in is property enumeration, not the iterable value loop.

Before continuing, be able to explain what is checked before execution and what actually changes at runtime in the example above.

Reaching the recap and completing the quizzes are separate milestones.

    Next lesson: break Statement →