
Вопросы на собеседование: Рефакторинг TypeScript
Pnym 45 минут назад Вопросы на собеседование: Рефакторинг TypeScript Средний 8 мин 1.3K TypeScript * JavaScript * ReactJS * VueJS * Интервью Собеседования по TypeScript всё чаще проверяют не только знание синтаксиса, но...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Pnym 45 минут назад Вопросы на собеседование: Рефакторинг TypeScript Средний 8 мин 1. 3K TypeScript * JavaScript * ReactJS * VueJS * Интервью Собеседования по TypeScript всё чаще проверяют не только знание синтаксиса, но и умение видеть «узкие места» в уже работающем коде. Задача кандидата - не просто сказать «тут ошибка», а предложить более безопасное, читаемое и поддерживаемое решение.
В этой статье собраны практические вопросы, основанные на реальных принципах рефакторинга TypeScript. Каждый пример показывает типичный код, который можно улучшить, и задаёт направление для размышлений. 🔹 Типы и сужение типовВопрос:«У нас есть код, где TypeScript выводит слишком широкий тип.
Технические детали
Как это исправить и зачем это нужно? »// Было ❌ const users = new Map(); // Map — слишком широко users. set('anna', 28); type Status = 'active' | 'blocked'; const = useState('active // выводится как stringСкрытый текст// Стало ✅ const users = new Map(); // чётко: ключ — строка, значение — число users.
set('anna', 28); type Status = 'active' | 'blocked'; const = useState('active // сужаем до нужных значенийЗачем:Ошибки ловятся на этапе компиляции, а не в продакшенеКод становится понятнее: сразу видно, какие данные допустимыЛегче рефакторить: если поменять тип - компилятор покажет все места, где нужно поправить🔹 Не дублируйте то, что и так очевидноВопрос:«Когда стоит явно указывать тип переменной, а когда можно довериться выводу типов? »// Избыточно ❌ const role: string = 'admin'; // и так понятно, что это string const items = new Map(]); // тип и так выведется const = useState(false); // boolean очевиденСкрытый текст// Достаточно ✅ const ROLE = 'admin'; // выводится как 'admin' (литерал), а не просто string const items = new Map(]); // выводится Map const = useState(false); // выводится booleanПравило: Указывайте тип явно только тогда, когда это помогает сузить тип. Во всех остальных случаях - доверяйте TypeScript.
🔹 Неизменяемость данныхВопрос:«Как защитить данные от случайных изменений в функции? »// Опасно ❌ — можно случайно изменить исходной массив const removeFirst = (list: Array) => { if (list. length === 0) return list; return list.
Отраслевые последствия
splice(1); // меняет исходной массив! };Скрытый текст// Безопасно ✅ const removeFirst = (list: ReadonlyArray)Почему важно:Меньше багов из-за побочных эффектовЛегче тестировать и отлаживать🔹 Обязательные и опциональные поляВопрос:«Почему не стоит делать все поля в интерфейсе опциональными? »// Сложно и небезопасно ❌ type Account = { id?
: boolean; permissions? : 'free' | 'pro'; }; // При использовании придётся постоянно писать account?.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





