Comp 110 Declaration, Initialization, Type Inference, and Assignment

Variables

Variables are used to store, change and access data. Each variable has its own name and holds a specific type of data.

Declaration

When you declare a variable, you're stating that the identifier (the variable's name) will refer to a value of a specific data type.

let <variableName>: <type>;

Variable names have no spaces and can only use letters, numbers, and underscores.

No variable can be used before it is declared.

Example of declaration:

let myFavoriteNumber: number;

You cannot declare more than one variable with the same name within the same scope, and you cannot access a variable outside of its scope. 

When you declare a variable without initializing it in the same statement, you must designate the variable's type.

Initialization and Type Inference

When you assign a value to a variable for the first time, you are giving it an initial value. This is called initializing the variable. Here's what this looks like:

<variablename> = <value>;

The type of the value you assign to the variable must match the type you specified when you declared the variable.

Example of initialization:

let myFavoriteNumber: number; // declaration
myFavoriteNumber = 101; // initialization

You may also declare and initialize a variable in the same statement. Here, designating a type is not necessary, since the program will be able to infer the type from the assignment.

Example of type inference:

let lameTeam = "Duke";

"Duke" is a string, therefore it is inferred that variable 'lameTeam' is a string without explicitly stating it!

Assignment

After you declare and initialize a variable, you can still change its value. All you have to do is assign a new value to that variable. When you change a variable's value, you are reassigning a new value to that variable. A variable's value is the value most recently assigned to that variable.

Example with myFavoriteNumber:

let myFavoriteNumber = 110; // declaration + initialization
print(myFavoriteNumber); //prints 110
myFavoriteNumber = 101; // myFavoriteNumber reassigned
print(myFavoriteNumber); //prints 101
//note: myFavoriteNumber cannot be assigned to a value that's type is not 'number'
//myFavoriteNumber = "Hello, World"; will result in an error

Keep in mind that the type of a variable cannot change after a type is declared/inferred!

Putting it all together...

You can access a variable's value by using the variable name.

Here are a few examples of making and using variables:

import { print } from "introcs";

let food: string; // declaration
food = "pizza"; // initialization

let numberOfSlicesLeft: number; // declaration is separate from initialization...type needed
numberOfSlicesLeft = 8; // initialization

let isHungry: = true; // declaration and initialization together...type inferred

numberOfSlicesLeft = 4; // reassignment
isHungry = false; // reassignment

print(food); // prints pizza
print(isHungry); // prints false
print(numberOfSlicesLeft); // prints 4