Как проверить тип объекта при конвертировании из другого типа в TS?

В TypeScript для проверки типа объекта при конвертировании из другого типа существует несколько способов. Один из самых популярных способов - это использование оператора as или функции as для явного приведения типов. Другой способ - использовать пользовательские типы и генерики для более безопасной конвертации.

Пример с использованием оператора as:

interface User {
    name: string;
    age: number;
}

const data: any = { name: 'Alice', age: 30 };
const user = data as User;

if (user && typeof user.name === 'string' && typeof user.age === 'number') {
    console.log('Converted user:', user);
} else {
    console.log('Failed to convert data to User type');
}

Пример с использованием пользовательского типа:

interface User {
    name: string;
    age: number;
}

function convertToUser(data: any): User | null {
    if (typeof data.name === 'string' && typeof data.age === 'number') {
        return data as User;
    }
    return null;
}

const data: any = { name: 'Alice', age: 30 };
const user = convertToUser(data);

if (user) {
    console.log('Converted user:', user);
} else {
    console.log('Failed to convert data to User type');
}

Оба этих подхода помогают убедиться, что объект успешно сконвертирован в нужный тип, а также обеспечивают безопасность типов в процессе конвертации.