The any type allows you to assign any value to a variable, effectively opting out of TypeScript’s type-checking for that variable. It provides the most flexibility but sacrifices type safety.

Example 1: Assigning Various Types

let notSure: any = 4;
notSure = "maybe a string instead";  // OK
notSure = false;  // OK, definitely a boolean

Key Points:

  • The any type can hold any value, such as a string, number, boolean, etc.
  • No type checking is performed on variables of type any, meaning they can be reassigned to any type.

Example 2: Using Methods with any

let notSure: any = 4;
notSure.ifItExists();  // OK, the method might exist at runtime
notSure.toFixed();  // OK, toFixed exists, but the compiler doesn’t check
  • With any, methods can be called without compile-time checks, which means TypeScript won’t warn you even if the method doesn’t exist.

Example 3: Using Object vs any

let prettySure: Object = 4;
prettySure.toFixed();  // Error: 'toFixed' doesn't exist on type 'Object'.
  • Object is more restrictive than any. You cannot call methods like toFixed because Object is the base type, and TypeScript doesn’t assume any specific methods on it.

Example 4: Using any[] (Array of any type)

let list: any[] = [1, true, "free"];
list[1] = 100;  // OK, you can change the type of each element in the array
  • any[] is an array where each element can be of any type, and TypeScript won’t check types within the array.