Віддавайте перевагу явним функціям set/get (наприклад, функціям setBar
і getBar
) над сеттерами/гетерами.
Розглянемо наступний код:
foo.bar = {
a: 123,
b: 456
};
За наявності сетера/гетера:
class Foo {
a: number;
b: number;
set bar(value:{a:number,b:number}) {
this.a = value.a;
this.b = value.b;
}
}
let foo = new Foo();
Це не є добрим використанням засобів налаштування властивостей. Людина, яка читає перший зразок коду, не має контексту щодо всіх речей, які зміняться. Тоді як хтось, хто викликає foo.setBar(value)
, може мати ідею, що щось може змінитися на foo
.
Бонусні бали: Пошук посилань працює краще, якщо у вас є інші функції. В інструментах TypeScript, якщо ви знайдете посилання на геттер або сеттер, ви отримаєте обидва, тоді як при явних викликах функцій ви отримаєте лише посилання на відповідну функцію.