TGViewer
YeaHub Tech YeaHub Tech @yeahub_tech · 412 subscribers
Post #286 82
🔖 TypeScript: 5 рекомендаций для профессионального кода

TypeScript делает код надежным, но неправильное использование приводит к багам. Следуйте лучшим практикам!


1️⃣ Используйте `unknown` вместо `any`

any отключает проверку типов — это как @ts-ignore для всей переменной. Опасно!

// ❌ Плохо
function process(data: any) {
return data.someMethod(); // Никаких проверок!
}

// ✅ Хорошо
function process(data: unknown) {
if (typeof data === 'object' && data !== null) {
// Безопасная проверка перед использованием
}
}


Правило: unknown заставляет вас явно проверить тип перед использованием. Это безопаснее!

2️⃣ Избегайте объектов-оберток непримитивов

// ❌ Плохо
let str: String = new String("hello");
let num: Number = new Number(42);
let bool: Boolean = new Boolean(true);

// ✅ Хорошо
let str: string = "hello";
let num: number = 42;
let bool: boolean = true;


Используйте примитивные типы: string, number, boolean, bigint, symbol.

3️⃣ Применяйте константные перечисления

Обычные enum генерируют дополнительный код во время выполнения. const enum встраивает значения напрямую!

// ❌ Генерирует runtime код
enum Status {
Active = "ACTIVE",
Inactive = "INACTIVE"
}

// ✅ Встраивается при компиляции
const enum Status {
Active = "ACTIVE",
Inactive = "INACTIVE"
}


Результат: Меньше кода, быстрее выполнение!

4️⃣ Используйте современные возможности JavaScript

TypeScript поддерживает опциональную цепочку (?.) и нулевое слияние (??):

// ❌ Старый способ
const name = user && user.profile && user.profile.name || 'Guest';

// ✅ Современный способ
const name = user?.profile?.name ?? 'Guest';


Преимущества:
🔸 Код короче и читабельнее
🔸 Меньше вероятность ошибок
🔸 Явная обработка null/undefined

5️⃣ Комбинируйте встроенные utility types

TypeScript предоставляет мощные инструменты для преобразования типов:

interface User {
id: number;
name: string;
email: string;
password: string;
}

// Все поля опциональны
type PartialUser = Partial<User>;

// Все поля только для чтения
type ReadonlyUser = Readonly<User>;

// Выбрать определенные поля
type PublicUser = Pick<User, 'id' | 'name' | 'email'>;

// Исключить определенные поля
type UserWithoutPassword = Omit<User, 'password'>;

// Сделать определенные поля обязательными
type RequiredName = Required<Pick<User, 'name'>>;


Комбинируйте их:
type SafeUser = Readonly<Omit<User, 'password'>>;


Итог ⬇️

TypeScript — мощный инструмент, но важно использовать его правильно:
✅ unknown безопаснее any
✅ Примитивные типы вместо оберток
✅ const enum для производительности
✅ Современный синтаксис JS
✅ Utility types для гибкости

Следуя этим рекомендациям, вы пишете не просто типизированный код, а надежный и поддерживаемый TypeScript!


📎 Статья

🎙 Новости

📝 База вопросов
  • ❤ 2
More from @yeahub_tech
  1. Oct 9, 2026#Собес #pipeline #ci #stage 🤔 Что происходит при автоматической сборке feature-ветки на s…
  2. Oct 8, 2026#course #задачи #тесты 📚 JavaScript. A3 Задачи Задачи на программирования на языке JavaSc…
  3. Oct 7, 2026#course #начинающие 📚 Твой Golang Твой Golang — это идеальный старт для освоения языка. П…
  4. Oct 5, 2026🧑‍💻 Вопросы с собесов для Node.js Разработчика 1. Как использовать Service Workers для р…
  5. Oct 2, 2026#Собес #transaction #propagation #required 🤔 Что такое propagation у транзакций и какие т…
  6. Oct 1, 2026#book #book 📚 Библия C#. 6-е изд. Автор: Михаил Фленов Это настольная книга программиста,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →