Understanding Primitive Types vs. Object Types in TypeScript

Photo by Rahul Mishra on Unsplash

TypeScript, a superset of JavaScript, enhances the language by adding static types. The type system in TypeScript is rich and offers ways to describe various kinds of JavaScript values. Broadly, these types can be categorized into two groups: primitive types and object types. In this article, we’ll explore these two categories, understand their nuances, and see how they can be effectively used in TypeScript.

Primitive Types

Primitive types are the most basic types and represent single values. In TypeScript, the following are considered primitive types:

  • string
  • number
  • boolean
  • null
  • undefined
  • symbol
  • bigint

Key Features of Primitive Types

  1. Immutable: Once a primitive type is created, it can’t be changed.
  2. Value Comparison: When comparing two primitives, their values are compared.
  3. Stack Allocation: Usually, primitives are stored directly in the location that the variable accesses.

Code Example: Using Primitive Types

const name: string = 'John';
const age: number = 30;
const isMarried: boolean = false;

Object Types

Object types in TypeScript refer to complex types that are made up of primitive types or other object types. Arrays, functions, and objects fall into this category.

Key Features of Object Types

  1. Mutable: Object types can be altered after their creation.
  2. Reference Comparison: When comparing two objects, their references are compared, not the content.
  3. Heap Allocation: Objects are generally stored in the heap, and a reference to the location is stored in the stack.

Using Object Types

interface Person {
name: string;
age: number;
}

const john: Person = { name: 'John', age: 30 };

Differences at a Glance

FeaturePrimitive TypesObject TypesImmutabilityYesNoStorageStackHeapComparisonValueReferenceExamplesstring, numberArray, Function, ObjectTypeScript Declarationconst x: number = 10;const obj: Person = { name: 'John', age: 30 };

Conclusion

Understanding the differences between primitive and object types is crucial for effective TypeScript programming. While primitive types are simple and immutable, object types are complex and mutable. Depending on your needs — whether you require immutability, simplicity, or complex structures — you can decide which type is appropriate for your application. Knowing when to use which can help you write more robust and maintainable TypeScript code.

,