Выбор ответа Junior tsconfig и декларации обновлено
Тип ошибки в catch
Вопрос
Что скажет компилятор при strict: true?
try {
JSON.parse('{');
} catch (e) {
console.log(e.message);
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка: e имеет тип unknown. Флаг useUnknownInCatchVariables входит в strict (с TypeScript 4.4): переменная в catch получает тип unknown, потому что бросить можно что угодно, не только Error.
Варианты ответа
- Всё компилируется:
eимеет типError - Ошибка: у
catchнужно указать типe: Error - Всё компилируется:
eимеет типany - Ошибка:
eимеет типunknownправильный ответ
Разбор
Флаг useUnknownInCatchVariables входит в strict (с TypeScript 4.4): переменная в catch получает тип unknown, потому что бросить можно что угодно, не только Error. Обращение к e.message без сужения запрещено. Правильно: if (e instanceof Error) e.message.
any был по умолчанию до этого флага. Аннотацию e: Error в catch написать нельзя: разрешены только any и unknown.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.