Наличие класса со свойством только для геттеров:
class Person {
sureName: string = "";
lastName: string = "";
get name() {
return `${this.sureName} ${this.lastName}`;
}
}
Мне нравится компактный C # способ инициализации вещей (например, string[] array = { "a1", "b1", "c1" };
, который также возможен в Typescript. Но используя этот короткий типизированный синтаксис, я вынужден установить свойство name
:
let p: Person = {
name: "xyz",
sureName: "a",
lastName: "b"
};
console.log(p); // { name: 'xyz', sureName: 'a', lastName: 'b' }
Модификатор геттера, похоже, полностью игнорируется! Почему происходит это странное поведение? Это не тот случай, когда используется оператор new
:
let p1 = new Person();
p1.name = "Peter"; // error TS2540: Cannot assign to 'name' because it is a constant or a read-only property.
Здесь метод получения корректно проверен с точки зрения ООП. Но по сравнению с первым мне не очень нравится new operator
: у меня нет осмысленности при установке всех обязательных полей, и мне всегда приходится вводить имя объекта в качестве префикса (p1.xyz
), что раздражает, когда приходится устанавливать несколько свойств на именованных объектах.
Но из-за чистого ООП я вынужден использовать синтаксис new
. Или прекратите использовать C #, как getter / setter, и используйте методы, такие как getName()
.