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;