Bird
Raised Fist0
Typescriptprogramming~5 mins

Getter and setter with types in Typescript

Choose your learning style10 modes available
Introduction

Getters and setters let you control how to read and change a value in an object. They help keep data safe and correct.

When you want to check or change a value before saving it.
When you want to hide how a value is stored inside an object.
When you want to run some code automatically when a value is read or changed.
When you want to make a property look like a normal variable but control its access.
When you want to add types to the values you get or set for safety.
Syntax
Typescript
class ClassName {
  private _propertyName: Type;

  get propertyName(): Type {
    // return the value
  }

  set propertyName(value: Type) {
    // set the value
  }
}

Use get before a method to make it a getter.

Use set before a method to make it a setter. The setter must have exactly one parameter.

Examples
This example shows a getter and setter for a name property with type string. The setter trims spaces.
Typescript
class Person {
  private _name: string = '';

  get name(): string {
    return this._name;
  }

  set name(value: string) {
    this._name = value.trim();
  }
}
This example only allows setting count to zero or positive numbers.
Typescript
class Counter {
  private _count: number = 0;

  get count(): number {
    return this._count;
  }

  set count(value: number) {
    if (value >= 0) {
      this._count = value;
    }
  }
}
Sample Program

This program creates a bank account with a balance. The setter checks that the balance is not negative before changing it. It prints the balance before and after trying to set a negative value.

Typescript
class BankAccount {
  private _balance: number = 0;

  get balance(): number {
    return this._balance;
  }

  set balance(amount: number) {
    if (amount >= 0) {
      this._balance = amount;
    } else {
      console.log('Balance cannot be negative');
    }
  }
}

const account = new BankAccount();
account.balance = 100;
console.log(`Balance is: $${account.balance}`);
account.balance = -50; // tries to set negative balance
console.log(`Balance is still: $${account.balance}`);
OutputSuccess
Important Notes

Getters and setters look like normal properties when used, but they run code behind the scenes.

Always type the getter return and setter parameter for safety and clarity.

Setters cannot return a value; they only set the property.

Summary

Getters and setters let you control how properties are read and changed.

Use types to make sure values are correct.

They help keep your data safe and your code clean.

Practice

(1/5)
1.

What is the main purpose of using getter and setter in TypeScript classes?

easy
A. To make functions run faster
B. To create new classes automatically
C. To control how properties are accessed and modified with type safety
D. To declare variables without types

Solution

  1. Step 1: Understand getter and setter roles

    Getters and setters allow controlled access to class properties, letting you add logic when reading or writing values.
  2. Step 2: Recognize type safety benefit

    Using types with getters and setters ensures only valid data is assigned or returned, keeping data safe.
  3. Final Answer:

    To control how properties are accessed and modified with type safety -> Option C
  4. Quick Check:

    Getter and setter purpose = control access + type safety [OK]
Hint: Getters/setters control property access safely [OK]
Common Mistakes:
  • Thinking getters/setters create new classes
  • Believing they improve function speed
  • Confusing them with variable declarations
2.

Which of the following is the correct syntax to define a typed getter for a property name of type string in a TypeScript class?

class Person {
  private _name: string;

  constructor(name: string) {
    this._name = name;
  }

  // What is the correct getter syntax here?
}
easy
A. get name(): string { return this._name; }
B. get name { return this._name; }
C. getter name(): string { return this._name; }
D. get name(): void { return this._name; }

Solution

  1. Step 1: Recall getter syntax in TypeScript

    The getter uses the keyword get, followed by the property name, parentheses, and a return type.
  2. Step 2: Check return type matches property type

    The getter must return a string since _name is a string.
  3. Final Answer:

    get name(): string { return this._name; } -> Option A
  4. Quick Check:

    Getter syntax = get + name() + return type [OK]
Hint: Getter needs 'get', name(), and correct return type [OK]
Common Mistakes:
  • Omitting parentheses after getter name
  • Using wrong keyword like 'getter'
  • Setting return type to void instead of string
3.

What will be the output of the following TypeScript code?

class Counter {
  private _count: number = 0;

  get count(): number {
    return this._count;
  }

  set count(value: number) {
    if (value >= 0) {
      this._count = value;
    }
  }
}

const c = new Counter();
c.count = 5;
c.count = -3;
console.log(c.count);
medium
A. undefined
B. 5
C. 0
D. -3

Solution

  1. Step 1: Analyze setter behavior

    The setter only updates _count if the new value is >= 0. Setting to 5 updates it, setting to -3 is ignored.
  2. Step 2: Check final value returned by getter

    The getter returns the current _count, which remains 5 after the invalid -3 assignment.
  3. Final Answer:

    5 -> Option B
  4. Quick Check:

    Setter blocks negative, final count = 5 [OK]
Hint: Setter blocks negative values, so count stays 5 [OK]
Common Mistakes:
  • Assuming setter accepts negative values
  • Expecting count to be -3 after invalid set
  • Confusing initial value with final output
4.

Identify the error in this TypeScript class using getter and setter:

class User {
  private _age: number;

  get age(): number {
    return this._age;
  }

  set age(value: string) {
    this._age = Number(value);
  }
}
medium
A. Setter parameter type should be number, not string
B. Getter must return string, not number
C. Private property _age should be string
D. Setter cannot convert string to number

Solution

  1. Step 1: Compare getter and setter types

    The getter returns a number, so the setter should accept a number to keep types consistent.
  2. Step 2: Identify mismatch in setter parameter

    The setter takes a string but assigns to a number property, causing a type mismatch.
  3. Final Answer:

    Setter parameter type should be number, not string -> Option A
  4. Quick Check:

    Setter param type must match property type [OK]
Hint: Setter param type must match property type [OK]
Common Mistakes:
  • Allowing setter param type different from property
  • Thinking getter return type should change
  • Believing setter can't convert types
5.

Given this TypeScript class, what will console.log(user.fullName); output?

class User {
  private _firstName: string;
  private _lastName: string;

  constructor(firstName: string, lastName: string) {
    this._firstName = firstName;
    this._lastName = lastName;
  }

  get fullName(): string {
    return `${this._firstName} ${this._lastName}`;
  }

  set fullName(name: string) {
    const parts = name.split(' ');
    if (parts.length === 2) {
      [this._firstName, this._lastName] = parts;
    }
  }
}

const user = new User('Jane', 'Doe');
user.fullName = 'John Smith';
console.log(user.fullName);
hard
A. Jane Doe
B. Jane Smith
C. John Doe
D. John Smith

Solution

  1. Step 1: Understand setter logic

    The setter splits the input string by space and updates _firstName and _lastName only if there are exactly two parts.
  2. Step 2: Apply setter and check getter output

    Setting fullName to 'John Smith' updates the names. The getter then returns 'John Smith'.
  3. Final Answer:

    John Smith -> Option D
  4. Quick Check:

    Setter splits and updates names, getter returns combined string [OK]
Hint: Setter splits fullName, getter joins first and last [OK]
Common Mistakes:
  • Assuming original names stay after setter call
  • Expecting only first or last name to change
  • Ignoring setter condition on split length
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard