TGViewer
Вёрстка сайтов | HTML, CSS, JS Вёрстка сайтов | HTML, CSS, JS @free_html_lessons · 4.51K subscribers
Post #2797 606
TypeScript: почему не стоит злоупотреблять as

В TypeScript есть удобный инструмент – type assertion, или приведение типа через as.

Например:

const user = getData() as User;


На первый взгляд может показаться, что мы “преобразовали” данные в тип User. Но на самом деле это не так.

as не меняет данные и не проверяет их структуру во время выполнения программы. Он только сообщает TypeScript, что мы хотим рассматривать значение как определённый тип.

Иными словами, мы говорим компилятору:
> “Считай, что это User. Я беру ответственность на себя”.

Из-за этого as может скрыть реальную ошибку.

Например:

type User = {
name: string;
age: number;
};
const data = JSON.parse('{"name": "Aram"}') as User;

console.log(data.age.toFixed());


TypeScript не покажет ошибку, потому что мы явно указали тип User. Но в реальных данных поля age нет, поэтому код упадёт во время выполнения.

Поэтому важно помнить: as не делает код безопаснее. Он лишь отключает часть проверки типов в конкретном месте.

Особенно осторожно стоит использовать as, когда данные приходят извне: с сервера, из localStorage, из JSON.parse или из сторонних библиотек.

Более надёжный подход — сначала проверить структуру данных, а уже потом работать с ними как с нужным типом:

function isUser(value: unknown): value is User {
return (
typeof value === 'object' &&
value !== null &&
'name' in value &&
'age' in value
);
}
const data: unknown = JSON.parse(json);
if (isUser(data)) {
console.log(data.age);
}


В этом случае TypeScript понимает, что внутри блока if значение действительно можно считать User.

Использовать его можно, но лучше делать это осознанно. Особенно там, где данные приходят из внешнего источника и могут не соответствовать ожидаемой структуре.
  • 👍 1
More from @free_html_lessons
  1. Sep 28, 2026Post #3065
  2. Sep 28, 2026Применение редких html атрибутов на практике. 1 часть Читать 👨‍💻 #полезнаястатья
  3. Sep 27, 2026Post #3063
  4. Sep 27, 2026Подборка лучших постов за прошлую неделю Лучшие статьи @free_html_lessons: 1. Функции в Ty…
  5. Sep 26, 2026Задача: Шифр подстановки Современные методы шифрования надёжно защищают наши коммуникации…
  6. Sep 25, 2026Макет для тренировки (rectop) Перейти к макету 🧑‍💻 #макет@free_html_lessons
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →