w3resource

TypeScript BankAccount Class with Private and Protected Properties

TypeScript Classes and OOP : Exercise-18 with Solution

Write a TypeScript class called BankAccount with the following properties and methods:

  • private accountNumber: string
  • protected balance: number

The class should have a constructor that accepts an account number and initializes the balance to 0. It should also include methods:

public deposit(amount: number): void to add funds to the account.

public withdraw(amount: number): void to deduct funds from the account.

Only the class and its subclasses should have access to the balance property.

Sample Solution:

TypeScript Code:

class BankAccount {
  private accountNumber: string;
  protected balance: number;

  constructor(accountNumber: string) {
    this.accountNumber = accountNumber;
    this.balance = 0;
  }

  public deposit(amount: number): void {
    if (amount > 0) {
      this.balance += amount;
      console.log(`Deposited $${amount}. New balance: $${this.balance}`);
    } else {
      console.log("Invalid deposit amount.");
    }
  }

  public withdraw(amount: number): void {
    if (amount > 0 && amount <= this.balance) {
      this.balance -= amount;
      console.log(`Withdrawn $${amount}. New balance: $${this.balance}`);
    } else {
      console.log("Invalid withdrawal amount or insufficient balance.");
    }
  }
}

// Example usage:
const bankAccount = new BankAccount("12345");
bankAccount.deposit(1200);  
bankAccount.withdraw(400);  
bankAccount.withdraw(1000);  

Explanations:

In the exercise above -

  • First, we define a "BankAccount" class with a private property 'accountNumber' and a protected property 'balance'.
  • The constructor accepts an 'accountNumber' and initializes the 'balance' to 0.
  • Next, we implement public methods "deposit()" and "withdraw()" to add or deduct funds from the account, respectively. These methods ensure that the provided amounts are valid and do not result in a negative balance.
  • The 'balance' property is accessible only within the class and its subclasses, as requested.

Output:

"Deposited $1200. New balance: $1200"
"Withdrawn $400. New balance: $800"
"Invalid withdrawal amount or insufficient balance."

TypeScript Editor:

See the Pen TypeScript by w3resource (@w3resource) on CodePen.


Previous: TypeScript Student Class with Private and Protected Properties.
Next: TypeScript Car Class with Protected Properties.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/typescript-exercises/typescript-class-and-oop-exercise-18.php