Skip to main content

Types in TypeScript

TypeScript is a statically typed superset of JavaScript that enhances the language by adding types. By incorporating types, TypeScript helps catch bugs early, enhances code readability, and makes the development process more predictable. Understanding types in TypeScript is key for any programmer wanting to leverage its power.

Assigning Types

Assigning types in TypeScript is all about annotating your variables, function parameters, and function return types with their respective types.

let name: string = "John Doe";
let age: number = 25;
let isEmployed: boolean = true;

The above code shows how we assign types to variables in TypeScript. We declare a variable using the let keyword, followed by the variable name, a colon (:), the type, and the value. This makes our code more predictable because we know what type of value each variable should hold.

Explicit Types

Explicit types in TypeScript involve directly assigning a type to a variable when you declare it.

let studentName: string;
let studentAge: number;
let isStudent: boolean;

Here, we're explicitly telling TypeScript that studentName should be a string, studentAge should be a number, and isStudent should be a boolean. By explicitly defining types, we can prevent unintentional assignments of the wrong types to these variables.

Implicit (Inferring) Types

TypeScript has a smart type inference system. If you assign a value to a variable at the time of declaration, TypeScript can infer the type of variable.

let cityName = "New York"; // TypeScript infers as string
let cityPopulation = 8623000; // TypeScript infers as number

In this case, TypeScript infers cityName to be of type string and cityPopulation to be of type number. So, even if you don't explicitly mention types, TypeScript has got you covered.

Primitive Types

TypeScript includes all of JavaScript's primitive types: boolean, number, and string.

boolean

This type can only be true or false.

let isTrue: boolean = true;
let isFalse: boolean = false;

number

The number type can be used for integer as well as floating point values.

let decimal: number = 10;
let float: number = 10.5;

string

The string type represents text values.

let firstName: string = "Jane";
let lastName: string = "Doe";

Special Types

TypeScript introduces some special types like any, unknown, never, undefined, and null.

any

The any type is a powerful way to work with existing JavaScript, allowing you to opt-in and opt-out of type-checking during compilation.

let notSure: any = 4;
notSure = "maybe a string";
notSure = false;

While using any can be helpful, use it sparingly as it defeats the purpose of using TypeScript.

unknown

The unknown type is similar to any, but it is safer because you can't perform arbitrary operations on an unknown without first asserting or narrowing to a more specific type.

let variable: unknown = "hello";
variable = 5;

never

The never type represents the type of values that never occur. It's often used to represent errors or infinite loops.

function error(message: string): never {
throw new Error(message);
}

undefined

undefined type in TypeScript is one of the primitive types and it has only

one value: undefined.

let u: undefined = undefined;

null

null in TypeScript represents the intentional absence of any object value.

let n: null = null;

Object Types

Lastly, object types are a way of representing non-primitive types in TypeScript.

let person: { name: string, age: number } = {
name: 'John',
age: 30
};

Here, we define a person object with name as a string and age as a number. With object types, TypeScript helps you ensure the shape of an object is correct throughout your code.