Вопрос проверяет знание TypeScript для принудительного приведения типов, когда стандартный оператор as не подходит из-за строгих ограничений компилятора.
TypeScript строго проверяет совместимость типов при использовании оператора as. Если вы пытаетесь привести тип, который не имеет пересечения с целевым, компилятор выдаст ошибку. Например, нельзя напрямую привести string к number.
Для обхода этой проверки используется двойное приведение через unknown. Сначала значение приводится к unknown, а затем к нужному типу. unknown является надтипом для всех типов, поэтому такое приведение разрешено.
const value: string = '123';
const num = value as unknown as number; // Работает, но опасно
console.log(num); // '123' (строка, не число)Двойное приведение отключает проверку типов, что может привести к ошибкам во время выполнения. Используйте его только когда абсолютно уверены в данных. Лучше применять пользовательские защитники типов (type guards) или проверки во время выполнения.
function isNumber(value: unknown): value is number {
return typeof value === 'number';
}
const data: unknown = '123';
if (isNumber(data)) {
console.log(data.toFixed(2)); // Безопасно
}Вывод: Двойное приведение через unknown — мощный, но опасный инструмент. Применяйте его только для обхода строгих ограничений TypeScript в контролируемых сценариях, отдавая предпочтение безопасным проверкам типов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию