> For the complete documentation index, see [llms.txt](https://artfulbits-se.gitbook.io/typescript/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://artfulbits-se.gitbook.io/typescript/main-1/classesareuseful.md).

# Classes are Useful

Класи корисні

Дуже часто зустрічається така структура:

```ts
function foo() {
    let someProperty;

    // інший код ініціалізації

    function someMethod() {
        // робота з властивостями `someProperty`
        // та інакший код
    }
    // можливо інші методи

    return {
        someMethod,
        // можливо інші методи
    };
}
```

Це відомо як *шаблон розкриваючого модуля* (*revealing module pattern*) і досить поширений у JavaScript (використовує переваги замикання JavaScript).

якщо ви використовуєте [*file modules* (що ви дійсно повинні робити, оскільки глобальний скоп - це погано)](/typescript/project/modules.md) тоді *your file is effectively the same* (ваш файл фактично той самий). Однак є занадто багато випадків, коли люди пишуть такий код:

```ts
let someProperty;

function foo() {
   
    // інший код ініціалізації
}
foo(); // код ініціалізації

someProperty = 123; // ще код ініціалізації

// Деякі службові функції не експортовано

// після
export function someMethod() {

}
```

Незважаючи на те, що я не є великим шанувальником успадкування *я вважаю, що дозвіл використовувати класи допомагає краще організувати свій код*. Той же розробник інтуїтивно написав би наступне:

```ts
class Foo {
    public someProperty;

    constructor() {
        // ініціалізація
    }

    public someMethod() {
        // код
    }

    private someUtility() {
        // код
    }
}

export = new Foo();
```

І це не лише розробники, створення інструментів для розробників, які забезпечують чудову візуалізацію класів, є набагато поширенішим, і вашій команді потрібно розуміти та підтримувати на один шаблон менше.

> PS: На мій погляд, немає нічого поганого в *неглибоких* ієрархіях класів, якщо вони забезпечують значне повторне використання та зменшення обсягу.
