Frontend Matrix: post #2004 — TG.ME

🎯 TypeScript: Забудь про as — используй Type Guards для безопасной типизации

Использование as SomeType (Type Assertion) отключает проверку типов и приводит к багам в рантайме. Пиши кастомные предикаты типов

interface User { id: number; name: str; }
interface Guest { isGuest: true; }

type Account = User | Guest;

# Опасно (компилятор поверит на слово, а в рантайме может быть undefined):
function getNameUnsafe(account: Account) {
return (account as User).name;
}

# Безопасно через Type Guard (возвращаемый тип `account is User`):
function isUser(account: Account): account is User {
return 'name' in account;
}

function getNameSafe(account: Account) {
if (isUser(account)) {
return account.name; // TS автодополнением видит, что это User
}
return "Гость";
}
July 26, 2026 230 5