TypeScript theorytheory 0/50 · 0%
Foundations · easy

10. Type inference & contextual typing

Letting the compiler figure out types for you.

TypeScript infers types from initializers, return statements, and context. You rarely need to annotate everything.

ts
let blockNumber = 18_000_000; // inferred: number
const chains = ["ethereum", "polygon"]; // inferred: string[]

[1, 2, 3].map(n => n * 2); // n inferred as number from array element type

Contextual typing infers a parameter's type from where a function is used — in the `.map` example, `n` is `number` because the array is `number[]`, even though `n` has no annotation. Best-common-type inference figures out array element types from a mix of literals, and 'widening' converts literal types (`"ethereum"`) to their general type (`string`) unless declared with `const`.

Check your understanding

  1. 1. What is 'contextual typing'?

  2. 2. Why is `let chain = "ethereum"` inferred as `string`, not the literal `"ethereum"`?

  3. 3. Do you need to annotate every variable in TypeScript?