Первоначально опубликовано здесь!
Чтобы определить и инициализировать приватные поля класса в самом конструкторе, в 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.
Вот и все 😃!
Не стесняйтесь поделиться, если вы нашли это полезным 😃.