Middle
Wie erkennt man, ob ein Wert vom Typ unknown ein bestimmter benannter Typ ist? Wie lässt sich TypeScript dazu bringen, zu verstehen, dass die Überprüfung durchgeführt wurde (Type Guard)?
sobes.tech KI
Antwort von AI
Чтобы определить, что значение типа unknown соответствует конкретному именованному типу в TypeScript, нужно написать функцию-предикат типа (type guard). Такая функция проверяет структуру или свойства объекта и сообщает компилятору, что после проверки значение имеет нужный тип.
Пример: допустим, есть интерфейс
interface User {
name: string;
age: number;
}
И есть значение value: unknown. Чтобы проверить, что value — это User, пишем функцию:
type User = { name: string; age: number };
function isUser(value: unknown): value is User {
return typeof value === 'object' && value !== null &&
'name' in value && typeof (value as any).name === 'string' &&
'age' in value && typeof (value as any).age === 'number';
}
Здесь value is User — это специальный синтаксис, который говорит TypeScript, что если функция возвращает true, то value можно считать типом User.
Использование:
const data: unknown = getData();
if (isUser(data)) {
// Здесь TypeScript знает, что data — User
console.log(data.name);
} else {
// data не User
}
Таким образом, type guard позволяет безопасно работать с типом unknown, уточняя его до конкретного именованного типа.