Getters and setters let you control how to read and change a value in an object. They help keep data safe and correct.
Getter and setter with types in 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.
name property with type string. The setter trims spaces.class Person { private _name: string = ''; get name(): string { return this._name; } set name(value: string) { this._name = value.trim(); } }
count to zero or positive numbers.class Counter { private _count: number = 0; get count(): number { return this._count; } set count(value: number) { if (value >= 0) { this._count = value; } } }
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.
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}`);
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.
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
What is the main purpose of using getter and setter in TypeScript classes?
Solution
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.Step 2: Recognize type safety benefit
Using types with getters and setters ensures only valid data is assigned or returned, keeping data safe.Final Answer:
To control how properties are accessed and modified with type safety -> Option CQuick Check:
Getter and setter purpose = control access + type safety [OK]
- Thinking getters/setters create new classes
- Believing they improve function speed
- Confusing them with variable declarations
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?
}Solution
Step 1: Recall getter syntax in TypeScript
The getter uses the keywordget, followed by the property name, parentheses, and a return type.Step 2: Check return type matches property type
The getter must return astringsince_nameis a string.Final Answer:
get name(): string { return this._name; } -> Option AQuick Check:
Getter syntax = get + name() + return type [OK]
- Omitting parentheses after getter name
- Using wrong keyword like 'getter'
- Setting return type to void instead of string
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);Solution
Step 1: Analyze setter behavior
The setter only updates_countif the new value is >= 0. Setting to 5 updates it, setting to -3 is ignored.Step 2: Check final value returned by getter
The getter returns the current_count, which remains 5 after the invalid -3 assignment.Final Answer:
5 -> Option BQuick Check:
Setter blocks negative, final count = 5 [OK]
- Assuming setter accepts negative values
- Expecting count to be -3 after invalid set
- Confusing initial value with final output
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);
}
}Solution
Step 1: Compare getter and setter types
The getter returns a number, so the setter should accept a number to keep types consistent.Step 2: Identify mismatch in setter parameter
The setter takes a string but assigns to a number property, causing a type mismatch.Final Answer:
Setter parameter type should be number, not string -> Option AQuick Check:
Setter param type must match property type [OK]
- Allowing setter param type different from property
- Thinking getter return type should change
- Believing setter can't convert types
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);Solution
Step 1: Understand setter logic
The setter splits the input string by space and updates_firstNameand_lastNameonly if there are exactly two parts.Step 2: Apply setter and check getter output
SettingfullNameto 'John Smith' updates the names. The getter then returns 'John Smith'.Final Answer:
John Smith -> Option DQuick Check:
Setter splits and updates names, getter returns combined string [OK]
- Assuming original names stay after setter call
- Expecting only first or last name to change
- Ignoring setter condition on split length
Ready to prove it?
Pass the test and this pattern moves unknown
