Як швидко перейти на return await?
#eslint #typescript
Спочатку коротко розповім, навіщо це робити. Помилки в логах записуються у stack trace. Якщо функція повертає not resolved promise, то у stack trace буде дірка. Приклади коду та докладний розбір є у Node.js Best Practices 2.12 Always await promises before returning to avoid a partial stacktrace
Минулого тижня я занурився у debugging. Проблема була замаскована обірваними stack trace. Виявляється, що позбутися цього можна дуже швидко. Достатньо додативідсутності транзакцій на рівні бази даних . Так що додайте це правило до вашого проекту, щоб наступне налагодження пройшло швидше.
#eslint #typescript
Спочатку коротко розповім, навіщо це робити. Помилки в логах записуються у stack trace. Якщо функція повертає not resolved promise, то у stack trace буде дірка. Приклади коду та докладний розбір є у Node.js Best Practices 2.12 Always await promises before returning to avoid a partial stacktrace
Минулого тижня я занурився у debugging. Проблема була замаскована обірваними stack trace. Виявляється, що позбутися цього можна дуже швидко. Достатньо додати
@typescript-eslint/return-await . Він має автофікс! Після eslint --fix дебаг втратив детективний сюжет, бо стало очевидним, що проблема у 👍54🤔4🤯3❤1
#typescript
На вихідних вийшла нова версія VSCode розширення
👉 підсвічування синтаксису для типів у повідомленнях про помилки
👉 кнопка, яка відкриває оголошення відповідного типу поруч з типом у повідомленні про помилку.
👉 кнопка, яка відкриває помилку на typescript.tv
👉 кнопка, яка відкриває помилку на ts-error-translator
Якщо ви ще не користуєтеся цим розширенням, рекомендую встановити.
Автор просить підтримати лайками додавання до VSCode необхідного API. Якщо ви віддаєте перевагу WebStorm, то ставте лайк JetBrains support. Будь ласка, ⚠️використовуйте лайк, а не коментарі⚠️ – це дозволить робити правильні метрики без спам сповіщень через коментар.
Посилання
🔗 source code
🔗 VSCode marketplace
🔗 upvotes to move forward
На вихідних вийшла нова версія VSCode розширення
pretty-ts-errors. Воно додає до вашого редактора:👉 підсвічування синтаксису для типів у повідомленнях про помилки
👉 кнопка, яка відкриває оголошення відповідного типу поруч з типом у повідомленні про помилку.
👉 кнопка, яка відкриває помилку на typescript.tv
👉 кнопка, яка відкриває помилку на ts-error-translator
Якщо ви ще не користуєтеся цим розширенням, рекомендую встановити.
pretty-ts-errors дуже спрощує роботу джунів та їх менторів. Автор просить підтримати лайками додавання до VSCode необхідного API. Якщо ви віддаєте перевагу WebStorm, то ставте лайк JetBrains support. Будь ласка, ⚠️використовуйте лайк, а не коментарі⚠️ – це дозволить робити правильні метрики без спам сповіщень через коментар.
Посилання
🔗 source code
🔗 VSCode marketplace
🔗 upvotes to move forward
👍39
Як забезпечити іммутабельність у вашому коді?
#typescript
⚠️Уточнення для новачків іммутабельності це незмінність даних.
У заголовок винесено одне з моїх улюблених питань для співбесід. Наведу найкращу-гіршу відповідь як я почув її в оригіналі: "TypeScript provides readonly, but it is only compile-time immutable protection. So I prefer to use Immutable.js for my codebase. I've also used Object.freeze()"
Поясню чим саме ця відповідь погана для продуктової розробки: у продуктовому коді розробник має повний контроль усіх етапів створення, зміни та знищення даних. Це не код бібліотеки або фреймворку, який невідомо, як буде запущений. Це код продукту, який буде працювати повільніше через використання Immutable.js або Object.freeze().
TypeScript має відмінний функціонал:
➡️ readonly у параметрах інтерфейсів
➡️ генерік Readonly, який особливо зручний для аргументів ваших функцій
➡️ as const під час оголошення змінних
Цей функціонал покриває всі потреби продуктового коду і не впливає на run time. Для консистентності використання цих фічів є @typescript-eslint/prefer-readonly-parameter-types. Так же можливо написати свої eslint правила, щоб команда не забувала про readonly в іммутабельних структурах даних, наприклад DTO.
Щось таке я хотів би почути на інтерв'ю на вищеназване запитання. Це та ще трохи критики, що readonly як і інші TypeScript конструкції роблять код багатослівним та схожим на Java.
#typescript
⚠️Уточнення для новачків іммутабельності це незмінність даних.
У заголовок винесено одне з моїх улюблених питань для співбесід. Наведу найкращу-гіршу відповідь як я почув її в оригіналі: "TypeScript provides readonly, but it is only compile-time immutable protection. So I prefer to use Immutable.js for my codebase. I've also used Object.freeze()"
Поясню чим саме ця відповідь погана для продуктової розробки: у продуктовому коді розробник має повний контроль усіх етапів створення, зміни та знищення даних. Це не код бібліотеки або фреймворку, який невідомо, як буде запущений. Це код продукту, який буде працювати повільніше через використання Immutable.js або Object.freeze().
TypeScript має відмінний функціонал:
➡️ readonly у параметрах інтерфейсів
➡️ генерік Readonly, який особливо зручний для аргументів ваших функцій
➡️ as const під час оголошення змінних
Цей функціонал покриває всі потреби продуктового коду і не впливає на run time. Для консистентності використання цих фічів є @typescript-eslint/prefer-readonly-parameter-types. Так же можливо написати свої eslint правила, щоб команда не забувала про readonly в іммутабельних структурах даних, наприклад DTO.
Щось таке я хотів би почути на інтерв'ю на вищеназване запитання. Це та ще трохи критики, що readonly як і інші TypeScript конструкції роблять код багатослівним та схожим на Java.
👍26❤3🔥1