Ayub Begimkulov - уроки по JS
3.1K subscribers
29 photos
212 links
По вопросам и деловым предложениям писать на @ayub_begimkulov
Download Telegram
Всем привет!

Переодически под моими видео люди спрашивают под видео почему я использую классы (если там они используются).

Решил раз и на всегда написать пост, чтобы можно было на него ссылаться.

Во первых, в самих классах ничего плохого не вижу. Не использовать их мне кажется каким-то идеализмом, из того же рода, что никогда не мутировать структуры данных.

С самим ООП есть проблемы, когда присутствует большой уровень наследования, а в остальных случаях думаю проблем нету.

Так вот, касательно плюсов классов:

1) Мне просто нравится, что в TS сразу же у тебя сгенерируется тип для твоего инстанса, в случае с функцией нужно создавать интерфейс либо же юзать ReturnType<typeof createSomeObject>.

2) Из мелочей, есть плюс того, что методы будут храниться в прототипе, а не создаваться на каждый рендер.

3) Также несмотря на проблемы с наследованием, прикольно юзать его на 1 уровень. Например, тот же EventEmitter так используют часто и React раньше использовал подобный паттерн для компонентов.

Я сам подобные наследуемые классы редко пишу, но для библиотек может быть полезно.

В остальном, сильных предпочтений не имею. Насколько я знаю, классы лучше оптимизируются самим V8 (вот тут на 100% не уверен), но зато плохо анализируются различными сборщиками. Часто из-за них ломается tree shaking.

Помню даже в статье про переход на функциональные компоненты команда React рассказывала про проблему с анализом кода, как одну из причин их решения.

В общем, правильного пути тут нет, просто делаюсь своим мнением. Всем хорошего вечера!

#devtips #classes
👍41💯21👎1🏆1🍓1