Как определить и инициализировать приватные поля класса в самом конструкторе в TypeScript?

Первоначально опубликовано здесь!

Чтобы определить и инициализировать приватные поля класса в самом конструкторе, в TypeScript нужно записать имена полей класса с ключевым словом-модификатором видимости private в скобках параметров функции конструктора.

TL;DR

// a simple class
class Person {
  // define and assign the values to class
  // fields inside the class
  // constructor parameters brackets
  constructor(private name: string, private age: number) {
    // we do not need any code
    // in the constructor body 🔥
  }
}

// make an instance of the `Person` class
const john = new Person("John Doe", 23);

// log the contents
console.log(john); // {name: "John Doe", age: 23} ✅
Вход в полноэкранный режим Выйти из полноэкранного режима

Например, допустим, у нас есть класс Person, в котором нам нужно определить 2 поля name и age.

Длинный способ определить и затем инициализировать поля класса — это создать поля внутри тела класса, а затем присвоить значения из конструктора полям класса с помощью оператора this.

Это может выглядеть следующим образом,

// A very long process and more code 😩
// a simple class
class Person {
  private name: string;
  private age: number;

  // assing the values to class
  // fields using the class constructor
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь, чтобы сделать процесс и код короче, TypeScript предоставляет нам способ, с помощью которого мы можем определить и затем инициализировать поля класса одновременно в скобках параметров конструктора.

Мы можем записать имена полей класса с ключевым словом-модификатором видимости private в скобках параметров функции конструктора следующим образом,

// A very short process and less code 😃
// a simple class
class Person {
  // define and assign the values to class
  // fields inside the class
  // constructor parameters brackets
  constructor(private name: string, private age: number) {
    // we do not need any code
    // in the constructor body 🔥
  }
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Как видите, мы не использовали никакого кода внутри тела конструктора.

Теперь создадим экземпляр класса Person и передадим значение John Doe в качестве первого аргумента и значение 23 в качестве второго аргумента в функцию конструктора и запишем содержимое объекта в консоль.

Это можно сделать следующим образом,

// A very short process and less code 😃
// a simple class
class Person {
  // define and assign the values to class
  // fields inside the class
  // constructor parameters brackets
  constructor(private name: string, private age: number) {
    // we do not need any code
    // in the constructor body 🔥
  }
}

// make an instance of the `Person` class
const john = new Person("John Doe", 23);

// log the contents
console.log(john); // {name: "John Doe", age: 23} ✅
Войти в полноэкранный режим Выйти из полноэкранного режима

Как видно из приведенного выше кода, мы получили правильный вывод со значениями, присвоенными соответствующим ключам в объекте. Это доказывает, что поля класса были определены и инициализированы.

Мы успешно определили и инициализировали приватные поля класса в самом конструкторе в TypeScript. Ура 🥳!

Посмотрите приведенный выше код в реальном времени в codesandbox.

Вот и все 😃!

Не стесняйтесь поделиться, если вы нашли это полезным 😃.


Оцените статью
Procodings.ru
Добавить комментарий