Pull to refresh
1
0
Алексей Гринько @AGrinko

Software Architect

Send message

Ну вот, есть флаг компилятора, любители строгой типизации могут быть частично довольны.

На практике, за много лет работы на крупных TypeScript-проектах, я, пожалуй, ни разу не сталкивался с вышеупомянутой ошибкой из-за выхода за границу массива.

Просто мне кажется, не стоит превращать TypeScript в Java, это не ускорит разработку. Хотите все плюшки строгой типизации - Java/C# + WebAssembly в руки, и вперёд :)

И все равно getItem, по мнению TypeScript, возвращает строку.

Я что-то не догоняю... Вы же явно указали тип string для элементов кеша:

const { getItem, setItem } = createCache<string>()

Естественно, теперь getItem возвращает только string, а как иначе? Хотите безопасную работу с null/undefined? createCache<string|null|undefined> (либо ваше решение, с встроенным undefined)

Хотите кеш с любыми типом значений? createCache<unknown>

Хотите выбрасывать ошибку для отсутствующих элементов? Добавьте проверку в реализацию методов.

Кроме того, в TypeScript есть куча настроек для уровня строгости типизации, просто далеко не все согласны выкручивать всё на максимум. Имхо, проблема высосана из пальца

Выглядит интересно, спасибо!

Вопрос: как обстоят дела с поддержкой разными браузерами? (пошёл гуглить сам, но это стоило бы упомянуть в статье)

Как человек с дипломом магистра в компьютерной инженерии, могу согласиться с тем, что сам диплом не даёт ничего (если это не какая-нибудь "Лига Плюща"). Но учёба дала многое, систематизировала знания. Не то, чтобы это всё нельзя было выучить самому и в два раза быстрее - можно, только я был бы как тот ёжик в тумане... Плюс, многие темы были такие низкоуровневые (карты Карно, микроконтроллеры, ассемблер, компьютерные сети), что я бы в жизни сам не стал их учить. На практике они вряд ли нужны фронтенд разработчику, но для общего развития и глубокого понимания работы компьютера очень помогли.

Стоит добавить, что JS я начал учить самостоятельно ещё на первом курсе, и со второго курса начал работать на полставки (а потом и full-time). В итоге после выпуска у меня было уже 3 года опыта. Без самообразования знаний из универа было бы недостаточно, чтобы начать работать.

И ещё, магистратура, имхо, не дала мне абсолютно ничего. Бакалавриат дал.

Всё равно некорректно: "... задавали на собеседовании и другие джуны". Ну не строятся так предложения в русском языке. "Задавали рекрутеры и другие джуны" - вот так валидно.

Кто-нибудь уже прокомментировал заголовок статьи? Возьму это на себя :)

Чуть три раза голову не сломал, пока понял суть заголовка. Вас спрашивали вопросы? Вопросы и другие джуны? Другие джуны на собеседованиях? Джуны уже проводят собеседования? x_x

Чтоб не быть совсем деструктивным, предложу пару альтернативных вариантов:

Вопросы, которые мне задавали интервьюеры и коллеги

Вопросы интервьюеров и джуниоров

Вопросы на собеседованиях и в реальной работе

Вопросы бывших, настоящих и потенциальных коллег

Статья интересная, но немного затянутая, на мой взгляд.

В 1910 году был синтезирован нейротрансмиттер «дофамин», а в 2000 году Арвиду Карлссону за исследования о важнейшей роли данного гормона в деятельности мозга...

Хотел придраться к этой фразе, где дофамин назван нейротрансмиттером и гормоном в одном предложении, но погуглил, и понял, что эта неразбериха везде, даже в Википедии. А ведь это разные вещи, по идее. Нейротрансмиттеры выделяются нейронами в нервных тканях, и работают быстро и локально; тогда как гормоны выделяются железами в кровь, разносятся по всему организму и работают дольше.

Но даже не цепляясь к терминологии, я считаю такой подход к объяснению проведения людей слишком упрощённым и притянутым за уши. Это близко к бихевиористской теории Скиннера, которая пытается всё многообразие людского поведения и взаимодействия с окружающими обосновать чисто механическим поощрением или наказанием в виде выброса химических веществ в организме. Современная психология далеко ушла с тех пор, и хотя бихевиоризм всегда играет свою роль, он объясняет далеко не всё. В эту тему очень советую почитать книгу Альфи Кона "Наказание наградой", чтоб взглянуть на вопрос мотивации людей (в т.ч. сотрудников) с совершенно другой стороны.

Этот комментарий тянет на отдельную статью, и очень дельную ​​

Хорошо изложено. Согласен насчёт boilerplate-кода - это прямо беда.

И вот тут Redux подводит - то, что должно быть цельным внутри компонента, оказывается размазанным по множеству файлов и сущностей - получаем Low cohesion вместо High. Связи, которые должны оставаться внутри, выходят наружу

Вот с этим не могу согласиться. Основная идея центрального хранилища в том, чтобы обеспечить единый источник информации (source of truth), которая нужна в разных компонентах или даже в разных модулях. Redux отлично подходит для глобального стейта. Он также вполне позволяет изолировать часть состояния и его логику на уровне модуля. Ну а если какая-то логика и состояние нужны только в одном компоненте - используйте для этого внутренний стейт компонента. Не нужно всё локальное пихать в store - это и сам Дэн Абрамов, по-моему, советовал.

Ну а множество файлов - это неплохо, если файлы, относящиеся к одному модулю, лежат рядом в одной папке - так мы избегаем файлов на сотни строк кода, как часто бывало с WinAPI. К тому же, Redux Toolkit смягчает эту проблему, объединяя объявление экшнов и редьюсеров с помощью "слайсера" в одном файле.

А в чём принципиальное отличие этой реализации от Babel?
Наследование статических полей — точно так же, методом Object.setPrototypeOf.
Наследование динамических полей — точно так же, методом d.prototype = Object.create(b).
Ссылка на супер-класс так же подменяется во время компиляции.
Смысл тот же, просто чуть больше проверок на редкие крайние случаи.
Всего не охватишь, есть ещё Mootools и т.п. Но спасибо за пример кода!
Выглядит аналогично реализации Babel.

Information

Rating
Does not participate
Location
Украина
Registered
Activity