Denis
Я спрашиваю про ТС
Александр
Я спрашиваю про ТС
https://www.typescriptlang.org/play#example/types-vs-interfaces Вот тут еще особенности есть
Александр
блин, переключился, удалилось все что писал
🏴‍☠️
класс это функция конструктор, а интерфейс хуй знает, говно от майкрософт
Александр
Короче типы использую там где их не нужно потом экпортировать, а интерфейсы - это публичные типы, которые можно передавать между компонентами, сервисами и тп Это условно. Плюс у них разница в информативности и возможности расширения. интерфейсы расширяемы, а типы только один раз задаются
🏴‍☠️
в тс protected это нихуя не защищенное поле, после транспиляции в жс
Denis
type Dog = IPet & ICanine; const dog: Dog; // !!!!!!!!!!!!!!!!!!! это как??? dog.bark; // свойство ICanine dog.pose(); // свойство IPet interface IPet { pose(): void; } interface ICanine { bark: boolean; }
Denis
ну в java же тоже есть интрефейсы))
Да, но там они не могут содержать свойства
Александр
Да, но там они не могут содержать свойства
всмысле не могут? Они описывают структуру объекта
🏴‍☠️
я видел типы (в смысле люди кадры) пишут в классе protected и туда пихают токен)) думают спрятали
Denis
Не могут
Александр
Как он делает const dog без ассигмента?
а зачем? dog - будет underfined, но при этом методы класса в нем будут
🏴‍☠️
ну в java же тоже есть интрефейсы))
ну в java и абстрактный класс это абстракция
Александр
Как он делает const dog без ассигмента?
это скорее уже к js вопросы и к прототипному наследованию)) Там очень много мутного
Denis
А где они хранятся?
Александр
В прямом
почитал, понял о чем ты Ну да, в ts можно задавать не только типы и имена методов, но еще и типы по сути "состояния" объекта в виде атрибутов Тут хз что ответить)
🏴‍☠️
Это отсюда ^
Там что-то другое, по твоему примеру ошибки
🏴‍☠️
Denis
Там что-то другое, по твоему примеру ошибки
Отсутствие ограничений это не всегда хорошо. То же самое и с типизацией. Ты можешь её юзать или нет. Бля, тогда нахера она вообще?
Denis
Ой не туда
Александр
ну оно кстати все равно может транспилироваться)
Denis
Ну посмотри там в статье
🏴‍☠️
Или ты все ошибки отключишь?)
Александр
Не может, ошибка же
Они информационная. С костылями можно и затранспилить)
Александр
Или ты все ошибки отключишь?)
джуны на проектах так все время делают)) На это тоже кстати ci/cd настроен, чтобы им неповадно было) Проверяет настройки))
🏴‍☠️
Они информационная. С костылями можно и затранспилить)
Тогда тс не нужен, зачем он, если отключать всю строгость, от которой хоть какой-то профит)
Denis
Ну блин, а какой смысл писать const без присваивания?
🏴‍☠️
Считаю, если тащить тс то по всей строгости
Denis
Считаю, если тащить тс то по всей строгости
Но тут то и начинается пиздец
Denis
Ладно я пошел. Приду пример разберём
🏴‍☠️
Но тут то и начинается пиздец
Да я таких пиздецов навидался, когда мы проект мигрировали с говнокодом на тс
🏴‍☠️
Александр
Тогда тс не нужен, зачем он, если отключать всю строгость, от которой хоть какой-то профит)
он нужен) С ним разработка быстрее идет и багфикс быстрее на крупняках. Он носит информационный характер Например когда у тебя объект проходит через 100500 функций в цепочке, на выходе как понять какая у него структура на этапе написания кода?
Александр
Вот чистый js херас два это покажет) А когда на ts прогаешь, то он в любом месте покажет тип и структуру и ругнется еще, что делаешь что-то не то сним)
Александр
Архитектуру чистую пили и норм будет
если бы все были сеньеры с такими знаниями, я только рад разработка велась бы быстрее и без попаболи)
Александр
Но увы)
Denis
Вот чистый js херас два это покажет) А когда на ts прогаешь, то он в любом месте покажет тип и структуру и ругнется еще, что делаешь что-то не то сним)
Я не встречал таких ошибок в реальных ситуациях. Ни разу ТС не ускорял мою разработку, всегда замедлял
Александр
Мне TS нужен. чтобы быстрее разгребать тонну навоза после 100500 патчей разными разработчиками) + самому удобно, когда можно прям на месте посмотреть типизацию и структуру, а не лезть через 100500 файлов, чтобы узнать а че там передается) Тесты писать хорошо, но поймешь ошибку только когда запустишь его) А с ts это в лайв режиме делается)
Александр
Если бы на проекте был изначально tdd ( что блин вообще крайняя радкость) Не было еще ниразу, чтобы я пришел в проект и там было все хорошо сэ тим_
🏴‍☠️
expect(value).toBeInstanceOf(Function); not.toBeNull() .toBeTruthy() .toBeUndefined() .toBeNaN()
🏴‍☠️
тесты написал, в критических местах проверил типы
Александр
Не делается. Он проверяет без имитации ввода данных в приложение
TS проверяет типы, а не правильность твоего кода Он не ругнется на херовый алгоритм, но ругнется, если ты пытаешься из объекта достать атрибут, которого нет в описанном типе)
Александр
Так я не пытаюсь этого делать. Даже случайно ни разу такого не было
Поздравляю) Но это делаю поголовно все джуны и иногда сеньеры, которые не наизусть знают проект. Например в энтерпрайз кровавый пришел. Тут сотни тысяч строк кода и тупо все на запомнишь что где и как и покрытие тестами отстойное) А был бы ts, то можно было бы и не разбираться с тем как там все устроено.
Александр
По опыту, после внедрения TS скорость разработки падает, но общая скорость релиза новой версии вырастает. Скорость закрытия багов увеличивается почти на 60%
🏴‍☠️
TS проверяет типы, а не правильность твоего кода Он не ругнется на херовый алгоритм, но ругнется, если ты пытаешься из объекта достать атрибут, которого нет в описанном типе)
ты можешь написать себе гарды типа isNumber и тд и применять их глобально на проекте, там где возможны приведения типов
🏴‍☠️
если типа неверный, throw new TypeError
🏴‍☠️
Denis
зачем писать костыли, когда уже все сделали за тебя?
https://github.com/Piterden/constructor-decorator/blob/master/index.js
🏴‍☠️
зачем писать костыли, когда уже все сделали за тебя?
тайпскрипт спасет тебя только на разработке, а гарды продолжат спасать после транспиляции в жс
Александр
🏴‍☠️
да, и они же замедлят прилично работу твоего приложения)
думаешь пару проверок на typeof способны просадить перф?
Denis
думаешь пару проверок на typeof способны просадить перф?
Это моветон. Надо на this.constructor.name проверять
Александр
думаешь пару проверок на typeof способны просадить перф?
у тебя нет, а представь, что тебе нужно новых людей н апроект посадить и не все нормально в таким подходом работали) Многие начинают упрощать жизнь, делают свои декораторы под вообще все подрят и у тебя появляется ад в виде повсеместных проверок)
Александр
О чем спорим вообще? у ts нет цели сделать JS безопасным Его цель привести разработку ближе к классической под ООП и не более. Просто удобство и доп информация по коду. Проверки на этапе кодинга.
Александр
Декораторы есть только в ТС
декоратор - это паттерн -_-
🏴‍☠️
Это моветон. Надо на this.constructor.name проверять
норм, только еще для NaN и null так не проверишь
Александр
Декораторы есть только в ТС
https://refactoring.guru/ru/design-patterns/decorator