Assertion Function with Type Guard
Assertion Function with Type Guard (утверждающая функция с защитником типа) — это специальная функция, которая:- Выполняет проверку типа во время выполнения
- Гарантирует, что после её успешного выполнения аргумент будет иметь определённый тип
- Если проверка не проходит — выбрасывает исключение
123456789101112131415161718192021
interface User { id: string; name: string; displayName: string; function assertDisplayName(user: User): asserts user is User & { displayName: string } { if (!('displayName' in user)) { throw new Error('User has no displayName property');} function logUserDisplayName(user: User) { assertDisplayName(user); console.log(user.displayName.toUpperCase());} const user1: User = { id: '1', name: 'Alice', displayName: 'Alice123' };logUserDisplayName(user1); // Работает const user2: User = { id: '2', name: 'Bob' };logUserDisplayName(user2); // Выбросит ошибку: User has no displayName property