3.12 Widened Types

In several situations TypeScript infers types from context, alleviating the need for the programmer to explicitly specify types that appear obvious. For example

  1. var name = "Steve";

infers the type of ‘name’ to be the String primitive type since that is the type of the value used to initialize it. When inferring the type of a variable, property or function result from an expression, the widened form of the source type is used as the inferred type of the target. The widened form of a type is the type in which all occurrences of the Null and Undefined types have been replaced with the type any.

The following example shows the results of widening types to produce inferred variable types.

  1. var a = null; // var a: any
  2. var b = undefined; // var b: any
  3. var c = { x: 0, y: null }; // var c: { x: number, y: any }
  4. var d = [ null, undefined ]; // var d: any[]