Middle
Ինչպե՞ս որոշել, արդյոք unknown տիպի արժեքը կոնկրետ անվանված տիպ է: Ինչպե՞ս դարձնել TypeScript-ին հասկանալ, որ ստուգումը կատարվել է (type guard):
sobes.tech AI
Պատասխան 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, уточняя его до конкретного именованного типа.