Класи корисні
Дуже часто зустрічається така структура:
function foo() {
let someProperty;
// інший код ініціалізації
function someMethod() {
// робота з властивостями `someProperty`
// та інакший код
}
// можливо інші методи
return {
someMethod,
// можливо інші методи
};
}
Це відомо як шаблон розкриваючого модуля (revealing module pattern) і досить поширений у JavaScript (використовує переваги замикання JavaScript).
якщо ви використовуєте file modules (що ви дійсно повинні робити, оскільки глобальний скоп - це погано) тоді your file is effectively the same (ваш файл фактично той самий). Однак є занадто багато випадків, коли люди пишуть такий код:
let someProperty;
function foo() {
// інший код ініціалізації
}
foo(); // код ініціалізації
someProperty = 123; // ще код ініціалізації
// Деякі службові функції не експортовано
// після
export function someMethod() {
}
Незважаючи на те, що я не є великим шанувальником успадкування я вважаю, що дозвіл використовувати класи допомагає краще організувати свій код. Той же розробник інтуїтивно написав би наступне:
class Foo {
public someProperty;
constructor() {
// ініціалізація
}
public someMethod() {
// код
}
private someUtility() {
// код
}
}
export = new Foo();
І це не лише розробники, створення інструментів для розробників, які забезпечують чудову візуалізацію класів, є набагато поширенішим, і вашій команді потрібно розуміти та підтримувати на один шаблон менше.
PS: На мій погляд, немає нічого поганого в неглибоких ієрархіях класів, якщо вони забезпечують значне повторне використання та зменшення обсягу.