TypeScript
April 16, 2024
Почему стоит избегать использования 'as' в TypeScript
Cкорее всего вы хотя бы раз использовали утверждение типа as при работе с TypeScript. Например:
interface User {
name: string;
email: string
}
export default {
name: 'Pavel',
email: 'spam@osinpaul.net'
} as UserОператор as — это способ сообщить компилятору: "доверься мне, я знаю, что делаю".
Проблема в том, что они не выполняют никаких проверок данных. TypeScript предполагает, что вы, программист, выполнили все необходимые специальные проверки самостоятельно.
Предположим, теперь нам нужно обновить интерфейс и добавить новое свойство:
interface User {
name: string;
email: string;
role: 'admin' | 'user'
}
export default {
name: 'Pavel',
email: 'spam@osinpaul.net'
} as UserВ этом случае TypeScript не выдаст ошибок, что может привести к ошибкам в нашем приложении. Более безопасным вариантом всегда является явное указание типа переменной:
interface User {
name: string;
email: string;
role: 'admin' | 'user'
}
const user: User = {
name: 'Pavel',
email: 'spam@osinpaul.net',
role: 'admin'
}
export default user;