TypeScript
April 16
Почему стоит избегать использования '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;